Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Zend Framework 2中扩展控制器_Php_Zend Framework2_Controllers - Fatal编程技术网

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',
         ),
     )
));