問題タブ [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 オートロード
PHP クラスを Composer でロードしたい。名前空間に従って、ディレクトリ構造に従うと機能します。
たとえば、私のクラス\MyCompany\MyProject\Class1
は にあるときにロードされsrc/MyCompany/MyProject/Class1.php
ます。私はこの作曲家設定を使用します:
ただし、src にあるのは MyCompany ディレクトリだけなので、すべてのファイルを MyCompany ディレクトリに配置したくありません。Java がこのように動作することは知っていますが、それでもなおです。Composer を設定して、クラスが直接 src にあるときにクラスをロードする方法はありますか? たとえば、ファイルからsrc/Class1.php
。
編集: PSR-4 はこの問題に直接対処しますが、classmap は引き続き機能します (本番セットアップには推奨されます)。
composer-php - 空でない PSR-4 プレフィックスは名前空間の区切り記号で終わる必要があります
Composer で PSR-4 をセットアップしようとしていますが、A non-empty PSR-4 prefix must end with a namespace separator.
私autoload
の私のcomposer.json
外見は次のようになります。
app/models
空です。
私は何を間違っていますか?どうすればこれを修正できますか?
php - psr-0 から psr-4 への変更後にエンティティを生成できない
いくつかのバンドルについて、psr-0 の自動読み込みを psr-4 に変更しました。今、app/console コマンドでエンティティを生成しようとすると、
"MbDbFooBundle" のベース パスが見つかりません (パス: "/home/roland/projects/rolandtest/mbmbisbundle/Symfony/vendor/mb/mb-db-foo-bundle"、宛先: "/home/roland/projects/ rolandtest/mbmbisbundle/Symfony/vendor/mb/mb-db-foo-bundle")。
最初は、生成されたオートローダーに問題があるのではないかと考えました。しかし、プロジェクトの新しいクローンを作成してから composer update を実行してベンダーを完成させると、まだこのエラーが発生します。
php - PHP の use ステートメントは、クラスをロードするときに余分な作業を引き起こしますか?
コード例 1
コード例 2
質問:
サンプル 1 のコードを使用すると、PHP はハードウェアの動作を難しくしますか (より多くのファイルを検索したり、より多くの処理を実行したりしますか?) use
どの行がどのクラスと一致するかを把握するコードのレベルであっても、何かが行われると確信しています。何が起こっているのか正確に知りたい。
要するに:
use
ステートメントの使用とそれが対象とするクラスとの間の関係を解決するとき、PHP は何をしますか?- これら 2 つのコード サンプルに関して、PSR-0/PSR-4 オートローダの動作に影響はありますか?
php - classmap が実際に高速な場合、composer で PSR-0 または PSR-4 オートロードを使用するのはなぜですか?
PSR 標準を使用してファイルを検索するか、composer にディレクトリを指定してクラスをスキャンできることを理解しています。ドキュメントでは、PSR-4標準の使用が推奨されています。composer が最適化されたオートローダーを作成するオプションもあります。これは、基本的に完全な classmap を生成します。ロードする最善の方法がクラスマップを使用する場合、なぜ PSR-4 を使用する必要があるのでしょうか?
とにかく整理するのに良い方法なので、ディレクトリ構造を維持することは私にとって理にかなっています。ただし、論理的なオプションは、開発マシンで PSR-4 の読み込みを使用してから、運用環境でクラスマップを使用することです。そうすれば、新しいクラスを作成するたびにクラスマップを再構築する必要はありませんが、実稼働環境ではデプロイ プロセスの一部として完全なクラスマップが作成され、追加の呼び出しは必要ありません。