如何正确使用通用类加载器


How to properly use Universal Class Loader?

我正试图在我的项目中使用Phalcon的通用类加载器功能,但我无法使其正常工作。

以下是我如何在我的应用程序中实现的(使用registerClasses)。

index.php:

//...
$loader->registerClasses(
    array(
        "Commons" => "library/classes/CommonsClass.php"
    )
);
$loader->register();

sampleController.php:

public function doAction()
{
    $cc = new Commons();
}

当我执行控制器时,它会抛出一个异常:

Fatal error: Class 'Commons' not found in C:'the'path'to'phalcon_app'app'controllers'SomeController.php on line 63

Phalcon文档只是说你需要注册一个类并在函数中调用它。我错过了什么?

Ps.:库文件夹没有在任何地方注册(不知道是否需要),并且它与控制器、视图等(/app/)位于同一路径中。

您可能应该检查您的目录结构。

给定:

mah_app/app/config/loader.php
mah_app/library/classes/Commons.php

我希望这能奏效:

// loader.php
$loader->registerClasses(
    array(
        "Commons" => __DIR__ . "/../../library/classes/Commons.php"
    )
)->register();
// works with $loader->registerDirs() for sure

此外,我还建议使用名称空间和/或将文件名与类名相匹配。

也有同样的问题。我注释掉了类中的名称空间声明,它起了作用。2.0.3版本。