Php 从目录加载类

Php 从目录加载类,php,model-view-controller,model,phalcon,autoloader,Php,Model View Controller,Model,Phalcon,Autoloader,我在PhalconFramework2.0中从目录加载“Model”类时遇到问题 我现在不能使用名称空间,因为project正在逐步从ZF1迁移,并且模型类本身有许多依赖项。如果我为每个目录加载器注册名称空间,效果会很好,但我需要在没有名称空间的情况下这样做 所以我这样做: $loader = new \Phalcon\Loader(); $loader->registerDirs( [ /** Phalcon controllers */ $configPhalcon-&

我在PhalconFramework2.0中从目录加载“Model”类时遇到问题

我现在不能使用名称空间,因为project正在逐步从ZF1迁移,并且模型类本身有许多依赖项。如果我为每个目录加载器注册名称空间,效果会很好,但我需要在没有名称空间的情况下这样做

所以我这样做:

$loader = new \Phalcon\Loader();
$loader->registerDirs(
[
    /** Phalcon controllers */
    $configPhalcon->application->controllersDir,
    /** Models */
    $configPhalcon->application->servicesDir,
    ...
    ...
],
true
)->register();
类名是Service_name(),其中Service-directory。文件名为name.php,因此我需要为目录注册类前缀:

$loader->registerPrefixes(
[
    'Service_' => $configPhalcon->application->servicesDir,
    ...
    ...
],
true
)->register();
现在,我想获得我的服务类:

$serv  = new Service_Name();
并获取致命错误:找不到类“Service_Name”。请帮帮我,我做错了什么?

谢谢你,我发现了问题!我有phalcon 1.3,一切正常,然后我将phalcon更新到2.0版本,没有测试自动加载

不同之处在于目录类的前缀

在1.3版本中,我使用“服务”

在2.0中,只要“服务”就可以了

因此,解决办法是

    $loader->registerPrefixes(
    [
        'Service' => $configPhalcon->application->servicesDir,
        ...
        ...
    ],
    true
    )->register();

是否有可能您拼错了目录路径,并且缺少一个尾随斜杠?尾随斜杠已就位,加载路径如下:../zendfr/app/services/如果我注册命名空间:$loader->registerNamespaces(['Service'=>$configPhalcon->application->servicesDir,],true)->register();我可以这样得到我的类:$serv=newservice\Name();但是我想通过类名来获得它。虽然没有多大帮助,但我很高兴你解决了你的问题。