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/"
)
);