Php Zend Framework 2包括自定义库
我的目录结构如下:Php Zend Framework 2包括自定义库,php,zend-framework2,Php,Zend Framework2,我的目录结构如下: public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ),
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
'prefixes' => array(
'CL' => 'c:\\Workspaces\\Custom library/CL',
'D' => 'c:\\Workspaces\\Custom library 2/D',
),
),
);
}
- c:\Workspaces\Zend
- c:\Workspaces\customlibrary
namespace Main\Controller;
use Zend\Mvc\Controller\AbstractRestfulController;
class InfoController extends AbstractRestfulController
{
public function getList()
{
$data = array(
'phone' => '+30123456789',
'email' => 'email@domain',
);
$Res = new CL_Res_Chain_Mutable();
return $data;
}
}
错误消息是:
致命错误:在C:\Workspaces\Zend\module\Main\src\Main\Controller\InfoController.php中找不到类“Main\Controller\CL\u Res\u Chain\u Mutable”
显然,我需要将这个自定义库添加到我的Zend应用程序中,但我在这里“有点”迷失了,我真的不知道怎么做。我在谷歌上搜索了一些解决方案,但似乎没有一个是这样的
另外,我在文件夹c:\Workspaces\Custom library 2
中还有另一个库,它(在其他文件中)有文件(class)D.php,我使用的文件类似于D::dump($data)
我怎样才能让它在我的Zend应用程序中像那样工作?您的类的名称空间是
Main\Controller
。如果在此处实例化一个新类new CL\u Res\u Chain\u Mutable()
php将相对于当前名称空间Main\Controller\CL\u Res\u Chain\u Mutable
加载它。您的类不是命名空间类,因此需要从根目录加载它。只需在新建\CL\u Res\u Chain\u Mutable()
前面放置一个\即可。您需要配置标准自动加载程序来加载库类。最简单的方法是修改应用程序模块的module::getAutoloaderConfig()
方法,使其看起来像这样:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
'prefixes' => array(
'CL' => 'c:\\Workspaces\\Custom library/CL',
'D' => 'c:\\Workspaces\\Custom library 2/D',
),
),
);
}
我添加了一个前缀
键,然后列出了前缀名称以及在磁盘上的位置。报告有更多细节
如果您正在使用,您也可以简单地将这些名称空间添加到文件中。默认情况下,您的应用程序将使用标准的Autloader(PSR-0)。这将基于名称空间和ZF2使用的命名约定查找文件。
ZF2将允许您注册多个自动加载器,因此您可以使用不同的策略,这是您需要执行的操作,下面是一个示例:
Module.php
/**
* Get autoloader config
*
* @return array
*/
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
// File containing class map key/value pairs
__DIR__ . '/library/autoloader_classmap.php',
// Or provide an array with the class map instead...
array(
'Application\Bootstrap' => __DIR__ . '/application/Bootstrap.php',
'CL_Res_Chain_Mutable' => __DIR__ . '/library/pathhere/Mutable.php',
),
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
此安装程序将使用tell ZF2首先检查类映射,如果找不到要查找的内容,则将恢复为标准自动加载程序
谢谢!我选择了这个作为一个可接受的答案,但是我应该在类名之前添加\的注释也非常有用!我在正确的轨道上,但这些真的帮助我把它钉对了!