嵌套控制器目录与Phalcon中的公共基本控制器

时间:2013-12-17 15:21:35

标签: php controllers phalcon

我有一个Phalcon项目设置,我有一个多个Controller目录的工作实现。我当前的目录结构很简单,如下所示:

/controllers
    /admin
        ControllerBase.php
        IndexController.php
    AuthController.php
    ControllerBase.php
    IndexController.php

为了实现这一点,我注册了两个命名空间:

$loader->registerNamespaces(
    array(
        'App\Controllers' => APP_PATH .'/controllers/',
        'App\Controllers\Admin' => APP_PATH .'/controllers/admin/',
        ...
    ));

虽然这有效,但在创建具有多个目录的大型应用程序时会出现以下两个问题:

  1. 我需要为/ controllers中的每个子目录注册一个单独的命名空间。这会导致10个以上命名空间的性能问题吗?
  2. 我不能为所有命名空间控制器提供1个通用ControllerBase。对于我的所有控制器,是否有任何方法可以从一个主基本控制器继承子目录/命名空间?
  3. 我遇到的主要问题是#2,似乎无论我尝试什么,我都不能将/admin/IndexController.php继承自/ControllerBase.php。它只允许我继承/admin/ControllerBase.php。

1 个答案:

答案 0 :(得分:0)

因为它似乎有效:

我有多个名称空间(多个路径)和许多控制器(有或没有名称空间),它们从一个ControllerBase(没有名称空间)继承。所以它是可行的。

至于PHP能够加载你的课程,你应该只能有一个ControllerBase