我正在尝试将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文件呢?
由于
答案 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属性定义之前的示例中的操作在语法上是不正确的,并且会导致解析错误。