2012-03-13 62 views
0

我想弄清楚Zend Framework如何自動加載功能。在zend框架中自動加載難題

問題:

1 - 說我要添加到我的應用程序/文件夾中的文件夾,名爲X /含一個名爲Foo.php類。當我從控制器執行新的Foo()時,如何讓它自動加載?那麼我應該如何命名Foo類? 「Foo」是否正常,還是應該使用名稱「Application_X_Foo」?

2 - 這是什麼故事與$ autoloader-> registerNamespace('My_')?我的意思是名稱空間My_中的類應該在哪裏生存?

感謝

回答

1

1.-對於特定應用類如果你想添加你應該使用Application_Model_Foo作爲類名,並已將其位於

2:在「應用程序/模型/ Foo.php」其他名稱空間/庫到您的項目,你可以添加這些在庫/文件夾下。在「My_」命名空間的情況下,您應該將其添加到「library/My」文件夾中。

在這裏,你可以看看一個基本的Zend Framework項目的目錄結構:

|-- application 
| |-- Bootstrap.php 
| |-- configs 
| | `-- application.ini 
| |-- controllers 
| | |-- ErrorController.php 
| | `-- IndexController.php 
| |-- models 
| `-- views 
|  |-- helpers 
|  `-- scripts 
|   |-- error 
|   | `-- error.phtml 
|   `-- index 
|    `-- index.phtml 
|-- library 
|-- public 
| |-- .htaccess 
| `-- index.php 
`-- tests 
    |-- application 
    | `-- bootstrap.php 
    |-- library 
    | `-- bootstrap.php 
    `-- phpunit.xml 

通過我會建議你去看看在Zend框架快速入門指南的方式: http://framework.zend.com/manual/en/learning.quickstart.html

+0

1 - 好吧,但這樣我會有文件夾模型/填充類可能屬於不同的域。是否有可能有像application/models/mypackage/Foo.php這樣的子包? 2 - 就此第二種情況而言,全都清除 – nourdine 2012-03-13 11:07:25

+0

只要您遵循正確的語法,就可以擁有所需的所有子目錄。你指定的是不正確的,你應該使用models/MyPackage/Foo.php而不是那個,並且這個類將被稱爲Application_Model_MyPackage_Foo。或者你可以使用模塊化結構,如果這是你所需要的:http://framework.zend.com/manual/en/zend.controller.modular.html – arraintxo 2012-03-13 11:53:36

+0

哦是的,你是正確的!所以基本上我可以在模型中儘可能深入地創建模型,然後創建我想要的所有子包,然後以我定義的類名稱反映該結構。因此,例如模型/ A/B/C/D/Foo.php的類名稱爲Application_Model_A_B_C_D_Foo。太好了!我挖了一下,它看起來取決於這個http://framework.zend.com/manual/en/zend.loader.autoloader-resource.html#zend.loader.autoloader-resource.module – nourdine 2012-03-13 11:58:17