[英]Trouble installing Omnipay library with Composer
我正在嘗試將Omnipay API與Pin網關一起使用但存在問題。
我在composer.json文件中使用this運行composer.phar:
{
"require": {
"omnipay/omnipay": "~2.0"
}
}
作曲家“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文檔似乎都使用這種語法。
我已經嘗試過要求並使用課外線,但這沒有用。
謝謝大家的幫助。
您必須在類定義之外使用use
運算符。
從PHP文檔:
導入的范圍規則
use關鍵字必須在文件的最外層范圍 (全局范圍)或命名空間內聲明中聲明。 這是因為導入是在編譯時完成的,而不是運行時,所以它不能是塊作用域。
http://php.net/manual/en/language.namespaces.importing.php#language.namespaces.importing.scope
您正在濫用Composer自動加載器。 您應該將自動加載器作為每個請求中的第一個文件之一,可能在加載任何配置文件或啟動會話之前。
由於它是當前編碼的,因此每當您調用該charge
方法時,都會添加Composer自動加載器的另一個實例。 在一個請求中調用三次charge
(例如,在循環中為三個客戶計費時)將在彼此之上添加三個自動加載器。 這聽起來像個壞主意。
請參閱http://getcomposer.org/doc/01-basic-usage.md#autoloading上的文檔,了解如何包含composer自動加載器。
特別要注意段落,如果你在composer.json文件中定義它,Composer也可以自動加載你自己的類。 這真的是一個很好的功能,你再也不需要要使用你要使用的類了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.