【发布时间】:2015-02-13 07:07:25
【问题描述】:
我是 Zend 2 的新手,正在尝试将我的 Zend 1 项目迁移到 Zend 2。我的 Zend 1 项目中有一个 Acl 插件,我使用符号链接与多个应用程序共享该插件。我想现在我迁移到 Zend 2 我会在 Vendor 文件夹中创建自己的包。我下载了 Skeleton 项目并尝试添加我的插件:
- 在供应商文件夹中,我创建了 myname\commons\Acl 并添加了一个我的 Module.php
- 在 myname\commons\Acl 中,我创建了 src\WebAcl\Controller\Plugin 并添加了带有命名空间 WebAcl\Controller\Plugin 的 WebAclPlugin.php
-
在我的 myname\commons\Acl 中,我创建了 ./config 并添加了 module.config.php 的内容
return array( // added for Acl ################################### ' controller_plugins' => array( 'invokables' => array( 'WebAclPlugin' => 'WebAcl\Controller\Plugin\WebAclPlugin', ) ), // end: added for Acl ################################### );
当我运行它时,我得到:
致命错误:在第 170 行的 AbstractPluginManager.php 中找不到类“WebAcl\Controller\Plugin\WebAclPlugin”
我做错了什么?
编辑:如果我在我的模块中指定它工作的类映射
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
)
但如果我使用“自动加载”它就不起作用
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
编辑 2: 这解决了问题:
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' *.str_replace("\\", "/", __NAMESPACE__),*
),
),
我还在试图弄清楚 composer.phar 究竟做了什么?查看其他问题:
其他问题:我读到我应该在 composer.json 中添加我的命名空间并运行 composer.phar 更新,它将它添加到 auto_namespace。我这样做了,但是当我在我的模块中指定它时需要这样做吗?对不起,如果我的问题被误解了。
【问题讨论】: