0

ペイパルの設定情報を application/paypal_library ファイルから分離しようとしています。基本的に、設定情報は API_username、API_pwd、API_signiture などです。

元の構造は次のようになります。

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_configファイルを実装するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

メソッドの外でインスタンスを初期化するのは論理的ではありません。クラスの実行中に使用できるようにするには、construt メソッドで初期化する必要があります。

これらの変数にアクセスできないという事実に関しては、変数を公開状態にしたことがわかりました。他のクラスがそれらにアクセスしないように (セキュリティ上の理由から) それらを非公開にして、状態を取得するための get メソッドをいくつか作成してみませんか?

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

     return $this->CI->API_UserName;

}

編集:

_construct メソッド内で変数を初期化し、常に Singleton インスタンスにバインドする必要があることを忘れていました

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

}
于 2013-01-31T15:02:03.990 に答える
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'];
}

クラスには、メソッドとプロパティの定義のみを含めることができます。

API プロパティ定義の前の例の操作は構文的に正しくなく、解析エラーが発生します。

于 2013-01-31T15:02:15.433 に答える