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

时间:2016-03-12 02:38:56

标签: php paypal phalcon autoload

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'。对于不使用名称空间的其他类,此自动加载器可以正常工作。怎么了?如何在没有Composer的情况下使用PayPal SDK?我认为Phalcon的自动加载器应该处理它。

我也尝试过:

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

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

1 个答案:

答案 0 :(得分:1)

"../app/vendor/PayPal/"应为"../app/vendor/"

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