【问题标题】:How to autoload PayPal classes with Phalcon autoloader?如何使用 Phalcon 自动加载器自动加载 PayPal 类?
【发布时间】:2016-06-27 11:00:43
【问题描述】:

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 的自动加载器应该将命名空间分隔符更改为目录分隔符。

【问题讨论】:

    标签: php paypal phalcon autoload


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多