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的自动加载器应该将命名空间分隔符更改为目录分隔符。
答案 0 :(得分:1)
"../app/vendor/PayPal/"
应为"../app/vendor/"
$loader->registerNamespaces(
array(
"PayPal" => "../app/vendor/"
)
);