0

我正在尝试将 paypal 配置信息与 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 在支付过程中找不到这些变量。

那么我怎样才能在这里实现 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 回答