代码之家  ›  专栏  ›  技术社区  ›  shanebo

如何使用PHP在前端控制器中创建命名空间

  •  1
  • shanebo  · 技术社区  · 15 年前

    好吧,我有一个很小的框架,我希望很快就能开源,我正在尝试实现名称空间,这样控制器和模型就不需要附加文本了。下面是基本的代码逻辑:

    • url请求
    • htaccess重新路由到索引.php它启动了框架
    • 框架解析路由并确定要实例化和触发的控制器/操作

    因此,为了允许控制器命名,例如:

    class Foo extends Controller {}
    

    后来的模型是:

    class Foo extends Model {}
    

    我的目录结构如下:

    project/
        controllers/
            foo.php
        models/
            foo.php
    

    2 回复  |  直到 13 年前
        1
  •  0
  •   Chad    13 年前

    一种方法是假设控制器位于同一空间中,手动预先设置名称空间。以下面的例子为例。

    public function __construct( $controller, $model )
    {
        $this->controller = 'Application\Controllers\\' . $controller;
        $this->model      = 'Application\Models\\'      . $model;
    }
    

    可能有一个更自动的方式来做这件事,但我认为这将足以在大多数情况下。请不要引用我的话,但也许您可以使用反射来获取被调用对象的名称空间。但是,这可能仍然需要一个更独特的命名约定,否则自动加载程序仍然不知道您是否在调用 Controllers\Index.php Views\Index.php .

        2
  •  -1
  •   dododedodonl    15 年前
    推荐文章