1

Omnipay API を Pin ゲートウェイで使用しようとしていますが、問題があります。

composer.json ファイルでこれを使用して composer.phar をローカルで実行しました。

   {
    "require": {
        "omnipay/omnipay": "~2.0"
    }
    }

composer の「vendor」フォルダーは、現在、私のサイトの「classes/libs/vendor」にあります。

私はこの支払いクラスを持っています:

class Payment extends BasicClass {
    public function charge() {
        require "libs/vendor/autoload.php";

        use Omnipay\Omnipay;

        $gateway = GatewayFactory::create('Pin');
        $gateway->setSecretKey($this->config->secretKey);
    }
}

通話時:

$topup = new Payment();
$topup->charge();

解析エラーが発生し、PHP が私のuse Omnipay\Omnipay行に問題を起こします。

Omnipay のすべてのドキュメントがこの構文を使用しているように見えるため、非常に混乱しています。

クラスの外で require および use 行を試しましたが、役に立ちませんでした。

みんなの助けに感謝します。

4

2 に答える 2

2

useクラス定義の外で演算子を使用する必要があります。

PHPドキュメントから:

インポートのスコープ規則

use キーワードは、ファイルの最も外側のスコープ(グローバル スコープ) または名前空間宣言内で宣言する必要があります。これは、インポートが実行時ではなくコンパイル時に行われるためです。そのため、ブロック スコープにすることはできません。

http://php.net/manual/en/language.namespaces.importing.php#language.namespaces.importing.scope

于 2013-11-26T23:58:22.780 に答える