我正在学习Phalcon(php)。
这是github中使用phalcon并具有以下文件夹结构的示例
单个命名空间/
├──应用
│├──控制器
││├──IndexController.php
││└──ProductsController.php
│├──型号
││└──Products.php
│└──风景
│└──产品
│└──index.phtml
└──公众
└──index.php
在public / index.php中,$ loader注册了名称空间
$loader->registerNamespaces(
[
'Single\Controllers' => '../apps/controllers/',
'Single\Models' => '../apps/models/'
]
);
$ dispatcher还设置了命名空间
$di->set('dispatcher', function () {
$dispatcher = new Dispatcher();
$dispatcher->setDefaultNamespace('Single\Controllers\\');
return $dispatcher;
});
如果我删除了$dispatcher->setDefaultNamespace('Single\Controllers\\')
,则错误消息指出 IndexController处理程序类无法加载
这是否意味着在名称空间中加载类时,Dispatcher / Router将忽略加载程序的设置?我们必须明确声明Dispatcher / Router的名称空间吗?
答案 0 :(得分:0)
也许您误解了Loader的目的和namespaces的用法。
在将值传递给$loader->registerNamespaces(...)
时,您告诉框架在哪里寻找您的类,在我们的例子中,通过调用Single\Controllers\IndexController
加载程序会尝试包含../apps/controllers/IndexController.php