2013-01-31 44 views
0

我試圖從應用程序/ paypal_library文件中分離paypal配置信息。基本配置信息是API_username,API_pwd,API_signiture等如何在codeigniter中實現paypal配置文件

原始的結構是這樣的:

class Paypal_library { 

    protected $ci; 

    public $API_UserName = xxx; 
    public $API_Password = xxx; 
    public $API_Signature = xxx; 
    ... 
    ... 
    function __construct() { 
     $this->ci = & get_instance(); 
    } 
    otherfunctions 

所以我在名爲config/paypal_config.php一個新的配置文件移到這些變量。 並把

$config['paypal_api_username'] =xxx; 
$config['paypal_api_password'] = xxx; 
$config['paypal_api_signature'] = xxx; 

但我有一個問題,當我稱之爲paypal_library.php這個配置文件。 我用:

protected $ci; 

    $CI = & get_instance(); 
    $CI->config->load("paypal_config",TRUE); 
    $config = $CI->config->item('paypal_config'); 

    public $API_UserName = $config['paypal_api_username']; 
    public $API_Password = $config['paypal_api_password']; 
    public $API_Signature = $config['paypal_api_signature']; 
    ... 
    ... 
    function __construct() { 
     $this->ci = & get_instance(); 
    } 

但這不起作用,因爲它似乎我不能構造函數之前把$ CI = & get_instance()?但是,如果我將它們放在構造函數中,paypal在付款過程中無法找到這些變量。

那麼我如何在這裏實現paypal_config文件?

謝謝

回答

0

應設置在構造函數的屬性。

function __construct() 
{ 
    $this->ci =& get_instance(); 
    $this->ci->load->config('paypal_config', TRUE); 
    $config = $this->ci->config->item('paypal_config'); 

    $this->API_UserName = $config['paypal_api_username']; 
    $this->API_Password = $config['paypal_api_password']; 
    $this->API_Signature = $config['paypal_api_signature']; 
} 

一個類只能包含method and property definitions

您的示例中的API屬性定義之前的操作在語法上不正確,並且會導致解析錯誤。

+0

但作爲PayPal處理付款,它會拋出像「變量未定義」的錯誤。所以似乎這些變量必須在構造之外讓貝寶訪問? – Mario

+0

確切的錯誤是什麼?您是在庫中還是在控制器中處理PayPal付款? – user20232359723568423357842364

+0

嗨,問題通過使用你的方法解決!沒有錯誤顯示。謝謝! – Mario

0

它是ilogic初始化任何方法以外的實例。您應該使用construt方法初始化它,以便在課程執行期間可用。

關於您無法訪問這些變量的事實,我已經看到您已將變量置於公共狀態。你爲什麼不讓它們變成私人的,以便其他類不會訪問它們(出於安全原因)並且構建一些獲取方法來獲得它們的狀態?

private $API_UserName = $config['paypal_api_username']; 
public get_PaypalUsername(){ 

    return $this->CI->API_UserName; 

} 

編輯:

忘了說,該變量應該在_construct方法內intialized以及八方通綁定到您的Singleton實例

public __construct() 
{ 
    $this->ci = & get_instance(); 
    $this->CI->API_UserName = $API_UserName; 
    //etc 

} 
相關問題