Php 在Zend Framework 2中扩展控制器
以下是我的应用程序结构:Php 在Zend Framework 2中扩展控制器,php,zend-framework2,controllers,Php,Zend Framework2,Controllers,以下是我的应用程序结构: /application /config /library /Foo /Controler.php /module /User /config /src /Bar /Controler /BarController.php /public /vendor /init_autoloader.php controller.php文件 namespace Foo_Controller; use
/application
/config
/library
/Foo
/Controler.php
/module
/User
/config
/src
/Bar
/Controler
/BarController.php
/public
/vendor
/init_autoloader.php
controller.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_autoloader.php中添加了路径/库文件夹
$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.');
}
我得到一个错误500,错误如下:PHP致命错误:在/application/module/Bar/src/Bar/Controller/BarController.PHP中未找到类'Foo\u Controller\Foo\u Controller'# 我真的不知道现在该怎么办。我已经在互联网上搜索了一段时间,寻找在Zend FrazWork 2中扩展控制器类的正确方法,但我似乎无法掌握它 我在应用程序中做错了什么?
谢谢你我建议你稍微改变一下。创建您自己的自定义模块会更有意义,您可以将其加载到具有以下目录结构的任何项目中: /zf2 MyCustomModule /src /MyCustomModule /控制器 /摘要 /MyAbstractController.php MyAbstractController.php的命名空间应为-MyCustomModule\Controller\Abstract 如果它是特定于项目的,那么为什么不添加 /摘要 /MyAbstractController.php 至用户模块控制器目录 但看起来您所做的非常正确,您只需要将Foo_Controller.php中的名称空间更新为:
namespace Julia\Foo\Controller;
不是
虽然我从未使用过你正在使用的方法,所以我不是100%确定
我会在/config/autoload/中添加一个新的本地配置
比如/config/autoload/namespaces.global.php
那么您的名称空间仍然应该是Julia\Foo\Controller 是的,更改名称空间应该可以。我在ZF2中扩展了控制器,没有任何问题。
namespace Foo_Controller;
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'Julia' => __DIR__ . '/Library',
),
)
));