問題タブ [psr-0]

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.

0 投票する
1 に答える
704 参照

symfony - psr-0 と composer はどのように機能しますか?

例を挙げて質問します。そのようなプロジェクトディレクトリがあるとします。

最初に、ベンダー ディレクトリにライブラリをインストールするために、composer.json ファイルをプロジェクト ディレクトリに正しく配置したかどうかを知りたいですか?次に、composer.json に次の行があるとします。

それでは、composer は、プロジェクト ルートに関してクラス samplevendor\package\sampleclass を探すためにオートローディングをどこで設定しますか? symfony2 composer.locked ファイルで次の行を見た後、私はこれを尋ねます:

更新: autoload_namespaces.php で対応する名前空間マップを見つけましたが、これは psr-0 に準拠していないようです:

'Doctrine\Common\Annotations\' => array($vendorDir . '/doctrine/annotations/lib')

0 投票する
1 に答える
737 参照

php - composer と PSR-0 による名前空間の自動ロード

composer と PSR-0 で名前空間の自動読み込みを実装したいのですが、なぜ機能しないのかわかりません。

私のファイル構造があります:

World.php

User.php

composer.json

そして、これをTest.phpでテストすると:

このエラーが発生します:

致命的なエラー: クラス 'my\user\User' が見つかりません

致命的なエラー: クラス 'my\world\World' が見つかりません

何が恋しいの!? どんなアドバイスでも大歓迎です!ありがとう。

0 投票する
1 に答える
723 参照

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 を実行してベンダーを完成させると、まだこのエラーが発生します。

0 投票する
1 に答える
472 参照

php - PHP の use ステートメントは、クラスをロードするときに余分な作業を引き起こしますか?

コード例 1

コード例 2

質問:

サンプル 1 のコードを使用すると、PHP はハードウェアの動作を難しくしますか (より多くのファイルを検索したり、より多くの処理を実行したりしますか?) useどの行がどのクラスと一致するかを把握するコードのレベルであっても、何かが行われると確信しています。何が起こっているのか正確に知りたい。

要するに:

  • useステートメントの使用とそれが対象とするクラスとの間の関係を解決するとき、PHP は何をしますか?
  • これら 2 つのコード サンプルに関して、PSR-0/PSR-4 オートローダの動作に影響はありますか?
0 投票する
1 に答える
93 参照

php - namescape が含まれているかコメントアウトされていない限り、PHP クラスをロードできません

サイトを検索した後、ネームスケープを前に付けてクラスをインスタンス化するか、クラスファイルでネームスケープをコメントアウトしない限り、クラスが見つからないという致命的なエラーが発生する理由がわかりません。私はPSR-0を使用して、この問題をうまく解決しようとしています.

オートローダー コード:

3 つのファイルすべて (Autoloader.php、Class.php、index.php) のパスは、すべて同じディレクトリ レベルにあります。サブディレクトリなどはありません。

オートローダー コードは、require_once("Autoloader.php"); を使用して index.php の先頭に実装されます。

クラスは $foo = new classFoo(); で呼び出されます。

tl;dr バージョン:

  • 呼び出されているクラスのネームスケープ宣言をコメントアウトしていますか? 正常に動作します。
  • 名前空間/クラス形式を使用してクラスをインスタンス化していますか? 正常に動作します。
  • さもないと?致命的なエラー: クラスが見つかりません (同じディレクトリにあるにもかかわらず.