我使用zend骷髅应用程序,我有这个目录:
/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();
}
}
My 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
如何解决?
谢谢
您应该在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();
}
}
看来你走错路了。
如果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'
前缀之前使用其类。
在应用模块或任何模块中创建autoload_classmap.php文件并加上:
<?php
return array(
'FF' => 'vendor/My/library/My/Helper/ff.php',
);
,那么您可以在模块中的任何地方使用它' FF::测试()