Zend framework 更改某些前缀的Zend自动加载路径
我要写一个简单的例子来说明我需要什么,因为经过3个小时的研究,我没有找到类似的东西 我所有的课程都是从Zend framework 更改某些前缀的Zend自动加载路径,zend-framework,path,namespaces,autoload,Zend Framework,Path,Namespaces,Autoload,我要写一个简单的例子来说明我需要什么,因为经过3个小时的研究,我没有找到类似的东西 我所有的课程都是从Project\uu开始的。例如,Project\u BaseController是基本控制器类 BaseController.php位于/www/Core/(这是集合中的路径之一\u include\u path),但自动加载程序会在/www/Core/Project/中搜索它 我想为每个以Project\uu开头的类设置/www/Core/的路径(之后它应该在命名后找到文件,比如:Proje
Project\uu
开始的。例如,Project\u BaseController
是基本控制器类
BaseController.php
位于/www/Core/
(这是集合中的路径之一\u include\u path
),但自动加载程序会在/www/Core/Project/
中搜索它
我想为每个以Project\uu
开头的类设置/www/Core/
的路径(之后它应该在命名后找到文件,比如:Project\u User=>/www/Core/User.php
)
也许我需要的是Zend\u Loader\u Autoloader\u资源
我对此表示怀疑,因为它不是用于资源的全局配置。您命名类的方法违反了ZF采用的PSR-0原则。你更容易跟随PSR-0。在这种情况下,您只需将项目类重新定位到项目目录。您命名类的方法违反了ZF采用的PSR-0原则。你更容易跟随PSR-0。在这种情况下,您唯一要做的就是将项目类重新定位到项目目录。中使用的方法可能会有所帮助。定制的自动加载器似乎是一种方式
将以下行添加到application.ini
autoloadernamespaces[] = "App_"
调整此项以匹配如果您保留了库文件,我将我的保留在library/App
中
在App/Loader/autoloader/Project.php中创建自动加载器,如下所示:-
class App_Loader_Autoloader_Project implements Zend_Loader_Autoloader_Interface
{
public function autoload($class)
{
$project = explode('_', $class);
if ($project[0] != 'Project'){
return false;
}
$project[0] = '/www/core';
require_once implode('/', $project) . '.php'
return $class;
}
}
在引导程序中初始化自动加载器:-
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoloading() {
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader(new App_Loader_Autoloader_Project());
}
}
显然,我没有一个环境可以与你的环境相匹配,所以我无法测试这个。然而,我已经根据我自己使用的自动加载器对其进行了调整,因此它应该可以正常工作,而无需太多调整
我最初是在一个应用程序中遇到这种技术的,从那以后我发现它非常有用
话虽如此,这是一个很好的建议,是首选;与框架一起工作,而不是反对它。如果您不能选择,我将提供此答案。中使用的方法可能会有所帮助。定制的自动加载器似乎是一种方式
将以下行添加到application.ini
autoloadernamespaces[] = "App_"
调整此项以匹配如果您保留了库文件,我将我的保留在library/App
中
在App/Loader/autoloader/Project.php中创建自动加载器,如下所示:-
class App_Loader_Autoloader_Project implements Zend_Loader_Autoloader_Interface
{
public function autoload($class)
{
$project = explode('_', $class);
if ($project[0] != 'Project'){
return false;
}
$project[0] = '/www/core';
require_once implode('/', $project) . '.php'
return $class;
}
}
在引导程序中初始化自动加载器:-
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoloading() {
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader(new App_Loader_Autoloader_Project());
}
}
显然,我没有一个环境可以与你的环境相匹配,所以我无法测试这个。然而,我已经根据我自己使用的自动加载器对其进行了调整,因此它应该可以正常工作,而无需太多调整
我最初是在一个应用程序中遇到这种技术的,从那以后我发现它非常有用
话虽如此,这是一个很好的建议,是首选;与框架一起工作,而不是反对它。我提供这个答案,以防这不是你的选择