用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3104|回复: 6
收起左侧

[已解决] 关于自定义config配置通过自定义libraries访问的问题

[复制链接]
发表于 2016-6-13 17:29:09 | 显示全部楼层 |阅读模式
本帖最后由 隐络 于 2016-6-15 23:10 编辑

如题:
自定义的config配置文件,在控制器中通过$this->config->load()方法来导入,然后通过$this->config->item()方法来访问其中的配置。
那么如果我有一个自定义的libraries,其中涉及到了一些常量,我想从config中读取,有没有什么好的方式,或者应该采取什么手段?


发表于 2016-6-14 09:57:47 | 显示全部楼层
試試這個呢 ?
$this->ci->load->config('test', TRUE);
 楼主| 发表于 2016-6-15 16:49:44 | 显示全部楼层
Closer 发表于 2016-6-14 09:57
試試這個呢 ?
$this->ci->load->config('test', TRUE);

好像也不可以,ci改成程序名称也不行。
A PHP Error was encountered

Severity: Notice

Message: Undefined property: Someclass:ci

Filename: libraries/Someclass.php

Line Number: 17
发表于 2016-6-15 17:01:32 | 显示全部楼层
隐络 发表于 2016-6-15 16:49
好像也不可以,ci改成程序名称也不行。
A PHP Error was encountered

忘了說,請參閱這個網站 : Github - loading config file from library
发表于 2016-6-15 18:17:57 | 显示全部楼层
本帖最后由 LaurenceForCI 于 2016-6-15 18:43 编辑

我觉得你可以在config中定义好常量,然后给某个config选项赋值
define('T', 'test');
$config['xxx'] = T;

不过为什么要定义常量呢?配置文件中定义的数组不就相当于常量吗?

参考我写的这个,我这个是写在libraries中的支付宝通知类:
这个是自定义支付宝通知类部分内容:
<?php defined('BASEPATH') OR exit('No direct script access allowed');/**
* CI_Alipayreturn
* @author Mike Lee
*/
class CI_Alipayreturn extends AlipayNotify {

    protected $ci;

    public function  __construct($config = array()){
        // 获得 CI 超级对象 使得自定义类可以使用Controller类的方法
        $this->ci = & get_instance();

        // 判断是否存在配置文件
        if (empty($config)) {
            // 加载 Alipay 配置文件
            $this->ci->load->config('alipay', TRUE);
            $config = $this->ci->config->item('alipay');
        }

        parent::__construct($config);
    }


}
?>


这个是config文件中alipay.php配置项:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Alipay 配置文件
*/
$config['partner']       = '';
$config['seller_id'] = $config['partner'];
$config['key']           = '';
$config['notify_url'] = "http://商户网址/create_direct_pay_by_user-PHP-UTF-8/notify_url.php";
$config['return_url'] = "http://商户网址/create_direct_pay_by_user-PHP-UTF-8/return_url.php";
$config['sign_type']    = strtoupper('MD5');
$config['input_charset']= strtolower('utf-8');
$config['cacert']    = getcwd().'\\cacert.pem';
$config['transport']    = 'http';
$config['payment_type'] = "1";
$config['service'] = "create_direct_pay_by_user";
$config['anti_phishing_key'] = "";
$config['exter_invoke_ip'] = "";
?>







 楼主| 发表于 2016-6-15 22:54:03 | 显示全部楼层
本帖最后由 隐络 于 2016-6-15 23:09 编辑
Closer 发表于 2016-6-15 17:01
忘了說,請參閱這個網站 : Github - loading config file from library

多谢!问题解决了。
 楼主| 发表于 2016-6-15 22:56:05 | 显示全部楼层
本帖最后由 隐络 于 2016-6-15 23:10 编辑
LaurenceForCI 发表于 2016-6-15 18:17
我觉得你可以在config中定义好常量,然后给某个config选项赋值
define('T', 'test');
$config['xxx'] = T;

嗯 很详细 非常感谢!问题解决了。

本版积分规则