php表示私有变量的是,从不同(包含)文件设置的PHP类私有变量

博客讨论了在CodeIgniter的国际化(i18n)库中如何处理动态配置,尤其是当需要更新语言选项时。作者遇到了一个问题,即如何在类中设置私有变量以引用从数据库加载的配置。解决方案是通过在构造函数中包含生成的配置文件,并使用`$this->`来设置私有变量。然而,这导致了构造函数的冲突,最终通过合并构造函数解决了问题。
摘要由CSDN通过智能技术生成

我有一个使用私有变量的类,那些变量是“配置变量”,我需要它们有时“改变”(在我的例子中,如果我添加新语言,我需要在配置中也使用新语言,它是CodeIgniter的i18n库.

我需要从数据库中设置$languages和$special.

class MY_Lang extends CI_Lang {

// languages

private $languages = array(

'en' => 'english',

'sk' => 'slovak',

'fr' => 'french',

'nl' => 'dutch'

);

// special URIs (not localized)

private $special = array (

"admin",

"link"

);

.

.

.

function MY_Lang()

{

parent::__construct();

.

.

.

我的想法是我生成一个文件并将其包含在库中.

如下:

我试过这个,所以每当管理员说到时,脚本都会生成文件language_config.php.

class MY_Lang extends CI_Lang {

public function __construct()

{

parent::__construct();

include_once(APPPATH.'/config/system_generated/language_config.php');

// languages

$languages = $generated['languages'];

// special URIs (not localized)

$special = $generated['special'];

}

和生成的文件

// languages

$generated['languages'] = array(

'en' => 'english',

'sk' => 'slovak',

'fr' => 'french',

'nl' => 'dutch'

);

// special URIs (not localized)

$generated['special'] = array (

"admin",

"link"

);

我不是问如何生成文件,而是如何在库文件中包含和使用包含的文件(并将变量设置为私有).我无法在构造函数中设置私有变量有没有办法将包含的变量设置为私有?

编辑:解决方案

我忘记了私人规则和整个OOP $this-> …,下面的代码工作正常.

class MY_Lang extends CI_Lang {

private $languages;

private $special;

public function __construct()

{

parent::__construct();

include_once(APPPATH.'/config/system_generated/language_config.php');

// languages

$this->languages = $generated['languages'];

// special URIs (not localized)

$this->special = $generated['special'];

}

EDIT2:另一个问题

当我加入新__constructor()我的课,它会导致问题,因为它不调用从CI_Lang __constructor()由于某种原因,即使在我的“添加” __constructor()有父:: __构造函数();应该调用CI_Lang __construcotr(),但事实并非如此.我甚至不知道如何调试这个.

EDIT2的解决方案

我的代码中有2个构造函数.只需合并它们.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值