Php zend框架中的自动加载
如何在模块路径的自定义目录中自动加载类。我的应用程序的结构如下所示Php zend框架中的自动加载,php,zend-framework,autoload,zend-autoloader,Php,Zend Framework,Autoload,Zend Autoloader,如何在模块路径的自定义目录中自动加载类。我的应用程序的结构如下所示 application |_ modules |_admin |_api | |_Core.php |_elements |_Dialog.php 我有两个自定义目录“api”和“elements”,当我实例化这两个类的对象时,我收到了错误消息:“致命错误类Admin\u api\u Core未找到”。我尝试使用registerNamespace,但它根本不起作用 Zend_L
application
|_ modules
|_admin
|_api
| |_Core.php
|_elements
|_Dialog.php
我有两个自定义目录“api”和“elements”,当我实例化这两个类的对象时,我收到了错误消息:“致命错误类Admin\u api\u Core未找到”。我尝试使用registerNamespace,但它根本不起作用
Zend_Loader_Autoloader::getInstance()->registerNamespace('Admin_');
看看ZFs
将以下内容添加到Bootstrap.php
protected function _resourceLoader()
{
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => 'APPLICATION_PATH',
'namespace' => '',
'resourceTypes' => array(
'acl' => array(
'path' => 'api/',
'namespace' => 'Acl',
),
'form' => array(
'path' => 'elements/',
'namespace' => 'Element',
),
),
));
}
Api_核心加载<代码>应用程序_路径。'/api/Core.php元素\u核心加载<代码>应用程序\u路径。'/elements/Core.php
管理Api核心加载
应用程序路径。'/modules/admin/api/Core.php
管理元素核心加载<代码>应用程序路径。'/modules/admin/elements/Core.php了解ZFs 将以下内容添加到Bootstrap.php
protected function _resourceLoader()
{
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => 'APPLICATION_PATH',
'namespace' => '',
'resourceTypes' => array(
'acl' => array(
'path' => 'api/',
'namespace' => 'Acl',
),
'form' => array(
'path' => 'elements/',
'namespace' => 'Element',
),
),
));
}
Api_核心加载<代码>应用程序_路径。'/api/Core.php元素\u核心加载<代码>应用程序\u路径。'/elements/Core.php
管理Api核心加载
应用程序路径。'/modules/admin/api/Core.php
管理元素核心加载<代码>应用程序路径。'/modules/admin/elements/Core.php您可以在模块引导程序中配置自动加载(与Benjamin Cremer的答案中的方法几乎相同,但基于模块)。 为此,请在/modules/admin文件夹中创建文件Bootstrap.php,其中包含以下内容:
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initAutoload()
{
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => realpath(dirname(__FILE__)),
'namespace' => 'Admin',
'resourceTypes' => array(
'api' => array(
'path' => 'api/',
'namespace' => 'Api'
)
)
));
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Admin',
'basePath' => dirname(__FILE__),
'resourceloader' => $resourceLoader
));
return $autoloader;
}
}
之后,您将能够实例化类Admin\u Api\u Core等(您应该指定所有资源类型)。如果您有许多模块,您可以为所有模块创建这样的引导。您可以在模块引导中配置自动加载(与Benjamin Cremer的答案几乎相同,但基于模块)。 为此,请在/modules/admin文件夹中创建文件Bootstrap.php,其中包含以下内容:
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initAutoload()
{
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => realpath(dirname(__FILE__)),
'namespace' => 'Admin',
'resourceTypes' => array(
'api' => array(
'path' => 'api/',
'namespace' => 'Api'
)
)
));
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Admin',
'basePath' => dirname(__FILE__),
'resourceloader' => $resourceLoader
));
return $autoloader;
}
}
之后,您将能够实例化类Admin\u Api\u Core等(您应该指定所有资源类型)。如果您有许多模块,您可以为所有模块创建这样的引导。根本不起作用,默认的基本路径不是管理模块,而是另一个模块,如果我将默认设置为admin yes,它会起作用,但是如果我将默认设置为另一个,它就不起作用,默认的基本路径不是管理模块,而是另一个模块,如果我按下将默认值设置为admin yes,它会工作,但是如果我设置为另一个,它不会工作得很好,这工作!非常感谢ischenkodv出色的工作!非常感谢你,伊申柯达