如何使用 Phalcon 自动加载器自动加载PayPal类


How to autoload PayPal classes with Phalcon autoloader?

Phalcon 自动加载机的配置方式如下:

$loader = new Phalcon'Loader;
$loader->registerDirs(array(
    '../app/4/controllers/',
    '../app/models/',
    '../app/services',
    '../app/forms/',
    '../app/vendor/'
))->register();

目录树为:

app
├───services
│   ├─── PayPalService.php   -   important
└───vendor
    └───PayPal
        ├───Api
        │   └───Amount.php
        │   └───and all other files
        ├───Auth
        ├───Common
        ├───Converter
        ├───Core
        ├───Exception
        ├───Handler
        ├───Rest
        ├───Security
        ├───Transport
        └───Validation

在PalPalService的开头.php有:

use PayPal'Api'Amount;
use PayPal'Api'Details;
use PayPal'Api'Item;
use PayPal'Api'ItemList;
use PayPal'Api'Payer;
use PayPal'Api'Payment;
use PayPal'Api'RedirectUrls;
use PayPal'Api'Transaction;
use PayPal'Rest'ApiContext;

Phalcon自动加载器显然找不到这些类,所以我得到错误Undefined class constant 'PayPal'.对于不使用命名空间的其他类,此自动加载器有效。怎么了?如何在没有作曲家的情况下使用PayPal SDK?我认为Phalcon的自动加载机应该处理它。

我也试过:

$loader->registerNamespaces(
    array(
        "PayPal" => "../app/vendor/PayPal/"
    )
);

它仍然找不到PayPal类。我不想列出每个PayPal目录,因为根据文档,Phalcon的自动加载器应该将命名空间分隔符更改为目录分隔符。

"../app/vendor/PayPal/"应该"../app/vendor/"

$loader->registerNamespaces(
    array(
        "PayPal" => "../app/vendor/"
    )
);