1

我正在设置一个多模块应用程序,到目前为止,我已经像这个示例http://docs.phalconphp.com/en/latest/reference/applications.html一样设置了它。

但是我在徘徊是否有可能共享后端和前端控制器都从其扩展的基本控制器。这样我就可以在基本控制器中拥有一个 ACL。我该如何设置?

根据文档,我可以在任何地方创建一个控制器库,然后直接在引导文件中需要这个文件,或者使用任何自动加载器加载。所以我创建了一个名为 apps/shared/controllers/ControllerBase.php 的文件夹,并直接在引导文件中需要这个文件,但这不起作用。

如果我尝试像这样加载控制器:

 class AdminController extends ControllerBase
 {

       public function indexAction()
       {
            echo "<h1>Hello admin!</h1>";
        }
  }

我收到一个错误...Backend\Controllers\ControllerBase' not found in......

那么如何根据文档使用任何自动加载器进行加载?我是否需要将其注册为自己的名称空间或其他东西?

4

1 回答 1

1

您没有为基本控制器使用完整的命名空间路径,因此自动加载器会尝试在子类的同一命名空间下找到它。

尝试这样的事情:

namespace MyApp\Backend\Controllers;

use MyApp\Shared\Controllers\ControllerBase;

class AdminController extends ControllerBase
{
    public function indexAction()
    {
        echo "<h1>Hello admin!</h1>";
    }
}

此答案认为您已正确应用PSR-0 和 PSR-4

于 2014-11-18T05:33:05.790 回答