ZF 1.10 アプリケーションにカスタム クラスを含むフォルダがあります。フォルダーは /library にあります。それらがどこにあるかを ZF に伝えるにはどうすればよいですか? application.ini と index.php の両方がライブラリへのパスを設定しますが、ZF はファイルを見つけることができません。
ありがとうございました
ZF 1.10 アプリケーションにカスタム クラスを含むフォルダがあります。フォルダーは /library にあります。それらがどこにあるかを ZF に伝えるにはどうすればよいですか? application.ini と index.php の両方がライブラリへのパスを設定しますが、ZF はファイルを見つけることができません。
ありがとうございました
独自のカスタム関数またはクラスを作成し、それらをどこに配置するかという問題に遭遇することがよくあります。
したがって、カスタム クラス (またはカスタム ライブラリ) を追加するには、zend フレームワークのオートローダー名前空間を使用できます。
以下の行を application.ini ファイルに追加します
autoloaderNamespaces.custom = "Custom_"
また
autoloaderNamespaces[] = "Custom_"
すべてのカスタム クラスは、ライブラリ ディレクトリの下に保持されます。ライブラリ ディレクトリにフォルダ名「Custom」(application.ini で定義) を作成します。
クラスには、ファイル内の宣言で「Custom_」というプレフィックスが付けられます (例: Custom_Test)
$test = new Custom_Test()
これで、アプリケーションでこのクラスを として使用できます。
多くの可能な解決策があります。最も一般的な方法は、Zend アプリケーションを使用する場合、application.ini
以下を追加して名前空間を登録することです。
autoloaderNamespaces[] = "Example_"
その他の解決策:
include_path
使用するディレクトリを追加しますset_include_path()
(アドホックソリューション)でオートローダをセットアップしBootstrap.php
ます。
protected function _initAutoloader()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace("Example"); // or Example_
}
最終的に、モジュールまたはリソースの autoloaderをセットアップします。
$resourceLoader->addResourceTypes(array(
'acl' => array(
'path' => 'acls/',
'namespace' => 'Acl',
),
'example' => array(
'path' => 'examples/',
'namespace' => 'Example',
),
));
Rob Allen によるこの古い Zend Framework チュートリアルを参照してください。具体的には、ブートストラップについて語っている 4 ページを参照してください。彼の新しいチュートリアルは、優れたものと同様に、Zend Tool に依存してアプリケーションの作成を行っているように見えますが、これについては詳しく説明していません。
しかし、私が驚いたことの 1 つは、含めようとしているフォルダーがpublic /libraryであるとあなたが言及したことです。意図的にコードを世界と共有したい場合を除き、別の場所に配置することを強くお勧めします...パブリックと共有されていない別の「パブリック」フォルダーを持っている場合を除きます(その場合、名前を変更することを検討することをお勧めします)。将来の混乱を避けるため)。
カスタム ライブラリを composer.json に追加します。
"autoload": {
"psr-0": {"Your": "vendor/My/library"}
},
composer update を実行します