Zend AutoLoad Custom Directory?

大憨熊 提交于 2020-01-05 03:45:30

问题


I thought autoloading was build into Zend so that if you tried to instantiate a class it would use the class name to try and find where the class's file was located.

I want to be able to load a DTO directory in my application's root directory using autoloader. I thought I could do something like this Application_DTO_MyClass for the file /application/dtos/myClass.php

I've tried googling it but haven't found anything useful. Any tips on the best way to do this?


回答1:


There are a couple of options open to you here depending on whether you want to create models in a subdirectory of Application/Models or create them in your own 'namespace' as a subdirectory of library. I am assuming you are using the recommended directory structure for Zend Framework.

For creating models in a sub directory of Application/Models, first create your directory; in your case Application/Models/Dto would be my recommendation.

In that directory create Myclass.php that would contain:-

class Application_Model_Dto_Myclass
{
    public function __construct()
    {
        //class stuff
    }
}

Which you would instantiate thus:-

$myObject = new Application_Model_Dto_Myclass();

If you want to create your classes in your own 'namespace' as a subdirectory of library then first create the directory library/Dto and, again create the file Myclass.php, which would look like this:-

class Dto_Myclass
{
    public function __construct()
    {
        //class stuff
    }
}

You will have to register this 'namespace'; I would recommend doing that in your application.ini by adding the line:

autoloadernamespaces[] = "Dto_"

You would instantiate this class thus:-

$myObject = new Dto_Myclass();

I'm not sure why you couldn't find this out through google, but you will find all this and more in the Zend Framework Programmers' Reference Guide. I also find the ZF code to be an excellent resource for working out how it all works.



来源:https://stackoverflow.com/questions/9744814/zend-autoload-custom-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!