如何在codeigniter中实现paypal配置文件

时间:2013-01-31 14:37:04

标签: codeigniter paypal configuration-files

我正在尝试将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文件呢?

由于

2 个答案:

答案 0 :(得分: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

}

答案 1 :(得分: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属性定义之前的示例中的操作在语法上是不正确的,并且会导致解析错误。