問題タブ [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.
php - php psr自動ロードのあいまいさ
私はphp sdkの書き換えプロジェクトに取り組んでおり、クライアントはPSR標準を完成させたいと考えています。こちらの規格ページを見ています
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
私が理解できないことの1つは、クラスで名前空間を使用する場合、includeまたはrequireまたはuseを使用する必要があるかどうかです。私は、自動ロードの理由全体が目的に勝っていることを意味しますか?
たとえば、このようにクラスがあるとします。
そして、このクラスを拡張して使用する別のクラスがあり、
上記のリンクにある自動ロード機能があることを考えると、上記のコードは psr-0 標準に準拠しています。
php - 異なる (短い) ディレクトリ構造を持つ Composer オートロード
PHP クラスを Composer でロードしたい。名前空間に従って、ディレクトリ構造に従うと機能します。
たとえば、私のクラス\MyCompany\MyProject\Class1
は にあるときにロードされsrc/MyCompany/MyProject/Class1.php
ます。私はこの作曲家設定を使用します:
ただし、src にあるのは MyCompany ディレクトリだけなので、すべてのファイルを MyCompany ディレクトリに配置したくありません。Java がこのように動作することは知っていますが、それでもなおです。Composer を設定して、クラスが直接 src にあるときにクラスをロードする方法はありますか? たとえば、ファイルからsrc/Class1.php
。
編集: PSR-4 はこの問題に直接対処しますが、classmap は引き続き機能します (本番セットアップには推奨されます)。
namespaces - composer で名前空間を psr-0 ライブラリとしてロードする
私は、あらゆる Web アプリケーション プロジェクトに Silex (および Composer) を使用しています。
4 つのエンティティとフォームを自動ロードしたい:
- FSB\MyProject\Entity\Booking --> /src/FSB/MyProject/Entity/Booking.php
- FSB\MyProject\Form\BookingType --> /src/FSB/MyProject/Form/BookingType.php
- FSB\MyProject\Entity\Contact --> /src/FSB/MyProject/Entity/Contact.php
- FSB\MyProject\Form\ContactType --> /src/FSB/MyProject/Form/ContactType.php
composer.json は psr-0 配列で定義されています。
次に、index.php ファイルで次のように呼び出します。
私の開発環境、MAMP、php 5.4ではすべて正常に動作します
しかし、PHP 5.4を搭載したUbuntuの本番サーバーであるApache2でも壊れます
「PHP 致命的なエラー: クラス 'FSB\MyProject\Entity\Contact' が /[...]/index.php に見つかりません」
次のようなエンティティをロードする多くの方法を試しました。
あるいは:
--> 私の開発環境ではいくつかの方法が機能しています。私の本番環境にはありません...
私は何か見落としてますか ?
php - composer autoloader psr-0 名前空間
カスタム Composer パッケージを作成しましたが、正しい autoload オプションを設定するのに問題があります。
私のクラスはすべてMyNamespace/Common
名前空間の下にあります。したがって、たとえば、ArrayHelper
クラスを含めるために使用しますMynamespace/Common/Helper/ArrayHelper
。
これは私の関連部分ですcomposer.json
:
私はこれを読みました: composer.json / autoload
何か助けはありますか?
laravel - Laravel 4名前空間のコントローラーからBaseControllerが見つかりません
(1) 主要なアプリケーション グループのコンポーネント (コントローラー/ビュー/など) が結合され、(2) Laravel のサポート コードが Web サーバーのドキュメント ルートの外にあるように、Laravel 4 サイトを構築しようとしています。デフォルトの laravel ホームページは正常に読み込まれますが、名前空間付きのコントローラーを正しくルーティングすることができません。関連するファイル構造は次のとおりです。
デフォルトのlaravelランディングページは正常にロードされています。しかし、独自の名前空間を持つコントローラーをセットアップしようとすると、エラーが発生し続けます。
これはHomeController.phpです:
ここに routes.phpがあります:
このセットアップでは、エラーが発生します: "Symfony \ Component \ Debug \ Exception \ FatalErrorException Class 'PageTypes\BaseController' not found" OK、laravel は少なくとも HomeController.php を見つけています。
他の多くの SO 応答から、BaseController を \BaseController に変更してみるように言われました。その 1 つの変更を行い、他のすべてを同じままにすると、「ReflectionException: クラス PageTypes\Home\controllers\HomeController が存在しません」というエラーが発生しました。なに?... >.<
名前空間、psr-0、およびlaravelのルーティングの交差点で何かを理解していません。助けていただければ幸いです。
フォローアップの質問: (1) これをデバッグするためにどのような手順を実行できましたか? NGINX のログは、スローされた例外エラーで見られるもの以外は何も教えてくれません。(2) 同様にレイアウトされた github の laravel シードに出くわした人はいますか? 何か参考になれば幸いです。
ここに私の構成設定があります:
php - PSR-0 オートロード エラー
プロジェクトに composer を使用したい。
私のプロジェクト構造:
名前空間
Composer.json
どこでエラー?ありがとう...