大家好我试图加载多个库,这些库位于库文件夹中的不同文件夹中使用命名空间但我一直找不到
我的目录结构是这样的
app/
controllers/
models/
library/
views/
我的loader.php就像这样
$loader = new \Phalcon\Loader();
/**
* We're a registering a set of directories taken from the configuration file
*/
$loader->registerNamespaces(array(
'Test\Name' => __DIR__ . "/../library/",
));
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir
)
)->register();
我的basecontroller试图像这样调用
$var = new Test\Name\functions();
和btw库中的文件函数是这样的
class functions extends Phalcon\Mvc\User\Component
{
public function __construct()
{
}
public function initialize()
{
}
public function checking(){
echo 'checks';
}
}
我继续
Fatal error: Class 'Test\Name\functions' not found in C:\wamp\www\app\controllers\ControllerBase.php on line 38
任何帮助都是赞赏的人thnx
答案 0 :(得分:1)
我认为你的班级应该有:
namespace Test\Name;
class functions extends Phalcon\Mvc\User\Component
{
// ... rest of it
在上面。
我也会做这个配置:
$loader->registerDirs(
array(
$config->application->controllersDir,
$config->application->modelsDir,
__DIR__ . "/../library/",
)
)->register();
所以你的课程会在(我也会将你的课程重命名为Functions:
app/library/Test/Name/Functions.php
因此,显而易见的是,Functions
类位于Test\Name
命名空间中。
答案 1 :(得分:0)
无法找到让我了解的讨论,但我的理解是,在使用命名空间时,您使用命名空间。使用目录和其他规则时,不要使用名称空间。
命名空间更快,所以最好只是坚持使用它们,删除registerDirs
因为它们是多余的并且与命名空间的意思相同:
library\Test\Name.php
变为:
$loader->registerNamespaces(array(
'Apps\Module\Controllers' => $config->application->controllersDir,
'Apps\Module\Models' => $config->application->modelsDir,
'Test' => __DIR__ . "/../library/Test",
));
然后以Test\Name
提供。
答案 2 :(得分:0)
$loader->registerNamespaces(array(
'App' => __DIR__ . "/../library/",
), true);
它将合并所有子目录,如果您的建筑图书馆像这样
library - Test - Name.php
您可以调用new \ App \ Test \ Name();