这是我的应用程序结构:
/application
/config
/library
/Foo
/Controler.php
/module
/User
/config
/src
/Bar
/Controler
/BarController.php
/public
/vendor
/init_autoloader.php
namespace Foo_Controller;
use Zend'Mvc'Controller'AbstractRestfulController;
class Foo_Controller extends AbstractRestfulController {
protected $foo;
public function getFoo()
{
return "foooo";
}
function __construct()
{
parent::__construct();
$foo = $this->getFoo();
}
}
BarController.php…
namespace Bar'Controler;
use Zend'Mvc'Controller'AbstractRestfulController;
use Foo_Controller'Foo_Controller;
use Zend'View'Model'JsonModel;
class BarController extends Foo_Controller {
.
..
....
}
在init_autolloader .php
中增加了path/library文件夹 $loader = include 'vendor/autoload.php';
$zf2Path = 'vendor/zendframework/zendframework/library';
$loader->add('Zend', $zf2Path);
$loader->add('Julia', 'library'); // added the library folder
if (!class_exists('Zend'Loader'AutoloaderFactory')) {
throw new RuntimeException('Unable to load ZF2. Run `php composer.phar install` or define a ZF2_PATH environment variable.');
}
PHP致命错误:Class 'Foo_Controller'Foo_Controller' not found in/application/module/Bar/src/Bar/Controller/BarController.php on line # 我现在真不知道该怎么办。我已经在互联网上搜索了一段时间,现在在Zend框架2中扩展控制器类的正确方法,但我似乎无法掌握它!
我在应用程序中做错了什么?谢谢你
我建议你稍微改变一下。创建你自己的自定义模块会更有意义,你可以加载到任何项目的目录结构,如:
/zf2-MyCustomModule/src/MyCustomModule/控制器/文摘/MyAbstractController.php
MyAbstractController.php的命名空间为- MyCustomModule'Controller'Abstract
如果它是特定于项目的,那么为什么不直接添加
/抽象/MyAbstractController.php
到用户模块控制器目录。
,但似乎你所做的是非常正确的你只需要更新名称空间在Foo_Controller.php:
namespace Julia'Foo'Controller;
不namespace Foo_Controller;
虽然我从来没有使用过你正在使用的方法,所以我不是100%确定。
我将添加一个新的本地配置到/config/autoload/
/config/自动装载/namespaces.global.php
Zend'Loader'AutoloaderFactory::factory(array(
'Zend'Loader'StandardAutoloader' => array(
'namespaces' => array(
'Julia' => __DIR__ . '/Library',
),
)
));
那么你的命名空间应该仍然是Julia'Foo'Controller;