我正在使用ZendSkeletonApplication,我有这个目录:
/home/mydir/vendor/My/library/My/Helper
包含ff.php(分别为/home/mydir/vendor/My/library/My/Helper/ff.php
)
ff.php
中的代码:
<?php
namespace My\Helper;
class FF {
public function test() {
echo "success !";
}
}
我的控制员:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use My\Helper\FF;
class IndexController extends AbstractActionController
{
public function indexAction()
{
FF::test();
return new ViewModel();
}
}
我的module.php:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
'My' => __DIR__ . '/../vendor/My/library/My'
),
),
);
}
我收到此错误:Fatal error: Class 'My\Helper\FF' not found in /home/mydir/module/Application/src/Application/Controller/IndexController.php on line 13
如何解决?
谢谢
答案 0 :(得分:6)
您应该在module.php
或init_autoloader.php
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
'My' => __DIR__ . '/../../vendor/My/library/My',
),
),
这将完成这项工作:)
编辑:在您的控制器中
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use My\Helper\FF;
class IndexController extends AbstractActionController
{
public function indexAction()
{
FF::test();
return new ViewModel();
}
}
或
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
\My\Helper\FF::test();
return new ViewModel();
}
}
答案 1 :(得分:2)
看起来你的路径错了。
如果init_autoloader.php
位于/home/mydir/
且库位于/home/mydir/vendor/My/library/
,则在自动加载器namespaces
数组中指定的正确值为
'My' => __DIR__ . '/vendor/My/library/My'
如果你在Module::getAutoloaderConfig()
方法中处理它(顺便说一下),只需在常量之后将正确的/..
序列添加到路径字符串中。您的里程可能会因Module.php的实际位置而异。
此外,与其他答案中所述相反,您确实可以使用use My\Helper
导入整个包,然后使用其前面只有Helper\
前缀的类。
答案 2 :(得分:0)
在应用程序模块或任何模块中创建文件autoload_classmap.php 并加入其中:
<?php
return array(
'FF' => 'vendor/My/library/My/Helper/ff.php',
);
然后你可以在你的模块中的任何地方使用它 \ FF ::测试()