問題タブ [psr-4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - composer PSR4 オートロードの問題
プロジェクトに PSR-4 オートローディングを実装しようとしています。これは私が継承した既存のアプリケーションであり、現在 OOP を使用していません (すべてスクリプト化されています) が、OOP を使用するように時間をかけてリファクタリングしたいと考えています。PSR-4 は最終的に大規模なプロジェクトになるため、私にとって非常に重要です。 .
現時点では、外部ライブラリ (完全に社内で作成された古いアプリケーション) に依存していないため、composer は現時点では自動読み込みにのみ使用されていますが、最終的には phpunit などのサードパーティ パッケージを使用する予定です。
サーバー上のアプリの構造は次のようになります。
composer.json:
login.php は、ユーザーが正常にログインすると、authenticated.php を呼び出し、authenticated は、以下を含む私の init.php スクリプトを呼び出します。
エラーがあるのはsearch.phpです。ユーザーが認証されると、ユーザーは search.php にリダイレクトされます。
search.php には次の行があります。
OSHelpers.php の名前空間は次のとおりです。
require_onceが使用されている場合、OSHelpers への静的呼び出しは正常に機能しますが、$current_os を定義する 2 行目で失敗しているように見えます。
私が受け取るエラーは次のとおりです。
なぜこれを行うのかについて少し途方に暮れていますか?このビデオ ( https://www.youtube.com/watch?v=VGSerlMoIrY ) の例に従うと、サンプル アプリは正常に動作しますが、これをもう少し複雑な構造で複製しようとすると問題が発生します。
composer dump-autoload -o を実行しました。ベンダー ディレクトリ内を調べると、クラスが正しく定義されていることがわかります。vendor/composer/autoload_classmap.php から:
php - Composer PSR4 の奇妙な動作
少し前に小枝拡張機能を作成しました。最近、名前空間を追加して、composer でより簡単に使用できるようにしました。これを数回実行しましたが、他のファイル/クラスでも問題なく動作します。
問題は、composer で autoload を更新またはダンプするときに -o オプション (最適化) を使用した場合にのみ、適切に自動ロードされることです。
たとえばcomposer dumpautoload -o
、クラスを実行しても問題はありません。実行composer dumpautoload
しても機能せず、次のエラーが表示されます。
私の拡張クラス:
私の作曲家ファイル
フォルダ構造
誰がこれを引き起こしているのか知っていますか? 何が原因なのかわかりません。最適化を使用するときにクラスマップを作成する作曲家に関係していると思います。
php - Symfony3 で自動生成されたクラスを解決する方法
psr 4 を使用している Symfony3 プロジェクトでは、「var/cache/dev」フォルダーに php クラスを自動生成して構成データを保存しています。
生成されたファイルの単純化されたコピーを次に示します。
include
ファイルを変更できることはわかってrequire
いますが、「dev」ディレクトリは開発と本番の間で変わり、いくつかの場所でクラスを使用しています。また、このバンドルを他のプロジェクトで使用したいと考えているため、バンドルの外部に何かをハードコーディングしたくありません。これらのファイルは通常どのようにロードされますか? Symfony コア内で支援するものはありますか?
php - クラスが見つかりません - PSR-4 名前空間のオートロード
私が書いたクラスの PSR-4 オートローディングをセットアップしたかったのです。ただし、エラーが発生し続けますFatal error: Class 'Glowdemon1\Translxtor\LangParserXML' not found in C:\xampp\htdocs\translator\index.php on line 5
フォルダ構造(画像はまだ投稿できません):
LangParserXML.class.php
index.php
composer.json
autoload_psr4.php
無数の投稿を調べましたが、解決策はありません。これは、さらに詳しく見たい場合に備えて、 https://github.com/glowdemon1/translxtorにも投稿されています。ありがとう。
php - 名前空間名の代わりに指定された PDO のインスタンス - コンポーザーによる PSR4 自動読み込み
PDO の使用方法を学習しようとしています。名前空間を使用する非常に小さなアプリケーションがあります。composer を使用して、クラスを自動ロードします。
PDO への PHPTheRightWay MVC アプローチに従おうとしていますが、失敗しています。私は自分の DbModel クラスをそれらのクラスと一致するようにセットアップしました。私の php コードでは、その新しいインスタンスを作成し、PDO オブジェクトを解析します。
クラス:
ページ:
ただし、次のエラーが発生します。なぜこれが起こっているのか分かりません。
キャッチ可能な致命的なエラー: Acme\DbModel::__construct() に渡される引数 1 は、Acme\PDO のインスタンスである必要があります。指定された PDO のインスタンスは、9 行目の C:\xampp\htdocs\footballMatch\matchDay.php で呼び出され、次のように定義されますC:\xampp\htdocs\footballMatch\src\DbModel.php 9 行目
このクラスを追加した後、 and を実行composer install
しcomposer dump-autoload
ます。
php - PSR-4: フォールバック php を保証するオートローダー (コンポーザー) と名前空間の拡張
名前空間のフォールバックと Composer での PSR-4 ローダーの使用に問題があります。
私がやろうとしていることはこれです:
- 上書き/拡張できるコアを持っています。
- コアはインターフェイスに基づいています。
ディレクトリ構造は次のようになります。
私はこの構成に設定されていないので、より良い提案があればそれを選択してください。
私の作曲家のjsonは、psr-4の場合は次のようになります。
サイトが見つからない場合、これにより ACME\App\Site\View が ACME\App\View にフォールバックされると思いました (インターフェイス部分はまだ行っていないことに注意してください...)。
site/app/View/Example.php の私のコードは次のようになります:
site/app/View/View.php もある場合、これは機能します。次のようになります。
site/src/app/View/View.php は次のようになります。
これはインターフェイスを使用する必要があります(まだ試していません)。
だから私が本当にやりたいのは、site/app/View/View.php を持つ必要がないようにすることです。また、site/app/View/Example.php を持つ必要もありません。 /src/ACME/app/View/Example.php.
申し訳ありませんが、私は名前空間に慣れていないので、うまく言い表せないかもしれません。
私が得ているのは、 ACME\App\Site が ACME\App にフォールバックすると思っていたということです-そうではありませんか? それとも私はそれを間違っていますか?現時点では、すべてのファイルを配置する必要があります。