Php Phalcon找不到类

Php Phalcon找不到类,php,namespaces,phalcon,phalcon-routing,Php,Namespaces,Phalcon,Phalcon Routing,大家好,我正在尝试加载多个库,这些库位于使用名称空间的库文件夹中的不同文件夹中,但始终找不到 我的目录结构是这样的 app/ controllers/ models/ library/ views/ $loader = new \Phalcon\Loader(); /** * We're a registering a set of directories taken from the configuration file */ $loader-&

大家好,我正在尝试加载多个库,这些库位于使用名称空间的库文件夹中的不同文件夹中,但始终找不到

我的目录结构是这样的

app/
   controllers/
   models/       
   library/
   views/
$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();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{


    public function __construct()
    {
    }

    public function initialize()
    {
    }

    public function checking(){

        echo 'checks';

    }

}
我的loader.php是这样的

app/
   controllers/
   models/       
   library/
   views/
$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();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{


    public function __construct()
    {
    }

    public function initialize()
    {
    }

    public function checking(){

        echo 'checks';

    }

}
我的basecontroller正试图这样呼叫

app/
   controllers/
   models/       
   library/
   views/
$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();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{


    public function __construct()
    {
    }

    public function initialize()
    {
    }

    public function checking(){

        echo 'checks';

    }

}
顺便说一句,库中的文件函数是这样的

app/
   controllers/
   models/       
   library/
   views/
$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();
$var = new Test\Name\functions();
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

非常感谢您的帮助。我认为您的班级应该:

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

因此很明显,您的
函数
类位于
Test\Name
名称空间中。

很难找到让我陷入其中的讨论,但我的理解是,在使用名称空间时,您使用名称空间。在使用目录和其他规则时,您不使用名称空间

名称空间速度更快,因此最好还是坚持使用它们,去掉
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
提供

$loader->registerNamespaces(array(
    'App'        => __DIR__ . "/../library/",
), true);
它将合并所有子目录,如果你像这样库目录架构

app/
   controllers/
   models/       
   library/
   views/
$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();
$var = new Test\Name\functions();
class functions extends Phalcon\Mvc\User\Component
{


    public function __construct()
    {
    }

    public function initialize()
    {
    }

    public function checking(){

        echo 'checks';

    }

}
图书馆 -试验 -Name.php

您可以调用new\App\Test\Name()