ホームページ  >  記事  >  バックエンド開発  >  Zend はモデルなどのクラスの自動読み込みをどのようにカスタマイズしますか

Zend はモデルなどのクラスの自動読み込みをどのようにカスタマイズしますか

WBOY
WBOYオリジナル
2016-06-13 13:00:41873ブラウズ

Zend はモデルなどのクラスの自動読み込みをどのようにカスタマイズしますか?
zendのアプリケーションにはデータベースを操作するクラスを格納するmodelsフォルダがあり、コントローラー内に新規作成するだけで利用できるのですが、とても便利なのでteaaフォルダも新規作成しました。理由はわかりませんが、new が常に報告されると、クラスが見つからないというエラーが報告されます。そして、ブートストラップで次の自動モジュールロードを設定しましたが、それでもクラスが見つからないというエラーが発生します。
保護された関数 _initAutoloader ()
{
$moduleAutoloader = new Zend_Application_Module_Autoloader(array('namespace' => '' , 'basePath' => APPLICATION_PATH));
return $moduleAutoloader;
}
最後に、パスがインポートされていないと思いました。ブートファイルindex.phpのset_include_pathにteaaフォルダのパスも追加しましたが、不思議なことにクラスが見つからないというエラーが報告されました。
------解決策----------------------
デフォルトの名前空間は
です 申し込み
ゼンド

カスタマイズしたい場合。 application.ini 設定ファイル
を使用できます。 たとえば

<br />
bootstrap.class = "Bootstrap"<br />
appnamespace = "Application"<br />
autoloadernamespaces.test = "Test_"<br />
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"<br />

autoloadernamespaces.test = "Test_" はカスタム プレフィックスを表します。
たとえば、プロジェクトの /library で TestClass
を定義します。 詳細は以下の通りです。
/library/Test/TestClass.php
ファイルの内容:
<br />
<?php<br />
class Test_TestClass {<br />
	public function show() {<br />
		echo "show";<br />
	}<br />
}<br />

実際に使用できます
<br />
    public function indexAction()<br />
    {<br />
        $testObj = new Test_TestClass();<br />
        $testObj->show();<br />
        exit;<br />
    }<br />


Module マルチモジュール方式を使用する場合は、
を使用する必要があります Zend_Application_Module_Autoloader と
Zend_Application_Module_Bootstrap クラスと組み合わせて使用​​されます。
_initAutoload
で使用できます $this->getApplication()
setAutoloaderNamespaces
setIncludePaths

自動的に読み込まれる名前空間と includepath
を設定するには
を参照してください。 http://blog.csdn.net/mengxiangbaidu/article/details/7192855
または公式文書

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。