問題タブ [spl-autoloader]
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 autoload - 異なるフォルダからクラス、特性、インターフェースを取得する方法は?
composer autoload を使用して、異なるフォルダーからクラス、特性、インターフェースを取得するにはどうすればよいですか?
それらのいくつかは、次のような名前空間を使用します。
コントローラー/Foo.php、
モデル/Boo.php
index.php、
エラー、
致命的なエラー: クラス 'MyNamespace\Foo' が C: に見つかりません...
composer.json、
多くの異なるフォルダーに多くのクラスがあります (展開される可能性があります) 。新しいフォルダーに新しいクラスがある場合、composer autoloadを再インストールしない方法はありますか?
php - PHPの自動ロード機能でクラスがインスタンス化されたファイルを取得する方法はありますか?
クラスが PHP でインスタンス化されたファイルを取得する簡単な方法はありますか? という同様の質問があります。しかし、異なるアプローチで。
サブネームスペースの正しいクラスをロードできるように、自動ロード (__autoload() または spl_autoload()) 関数のソースを知る必要があります。
例によって私の問題を少し説明しましょう - 私の次のクラスを考えてください: /my/project/root/faculties/faculty.class.php .php [名前空間: 学部/学部1] /my/project/root/faculties/completely/different/project/at/deep/project/root/faculties/faculty.class.php [名前空間: 学部]
その別のプロジェクトのインスタンスにアクセスしたい場合、ルートプロジェクトとの競合により、同じ名前空間が発生します。
php - spl_autoloader がクラスをロードしない
名前空間の使用を開始し、いくつかのドキュメントを読みましたが、何か間違っているようです。
まず、次のように構築されたアプリケーション構造です。
今、srcディレクトリにクラスを含めました:
config.php の内容は次のとおりです。
index.phpでこのように使用します
これが echo get_include_path(); です。戻り値:
それが私が望むものだと思います。しかし、クラスはロードされておらず、何も起こっていません。私は明らかに何かが欠けていますが、それを理解できないようです。皆さんはそれを見て、なぜこれが機能しないのか説明してもらえますか?
php - 特定のクラスのオートロードを強制する
この前の質問は、すべてのクラスのオートロードを強制する方法を示しています。
ただし、1 つのクラスだけを強制的に自動ロードする必要があります。どうすればそれができますか?
してはいけません:
- クラスのソースコードの変更を伴う
- クラスのソース コードの任意の部分 (メソッド、変数、修飾子など) に依存します。具体的なものから抽象的なものに影響を与えずに自由に変更できる必要があります。
また、できれば、クラスの名前を文字列としてコーディングする必要はありません。(IDE のリファクタリングなどを支援するため)。
これまでに見つけた最良のオプションは、次を使用することspl_autoload_call()
です。
または名前空間のないクラスの場合: