変数を使用するクラスがあり、private
それらの変数は「構成変数」であり、時々「変更」する必要があります (私の例では、構成に必要な新しい言語を追加する場合、新しい言語も 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'];
}
および生成されたファイル
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
// languages
$generated['languages'] = array(
'en' => 'english',
'sk' => 'slovak',
'fr' => 'french',
'nl' => 'dutch'
);
// special URIs (not localized)
$generated['special'] = array (
"admin",
"link"
);
私はファイルを生成する方法を尋ねているのではなく、ライブラリファイル内に含まれているファイルを含めて使用する方法を尋ねています(そして変数を private として設定します)。コンストラクター内でプライベート変数を設定できません含まれる変数をプライベートとして設定する方法はありますか?
編集:解決策
private
ルールと 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:これに関する別の問題
クラスにnew を追加したので、何らかの理由で CI_Lang から呼び出されない__constructor()
ため、問題が発生します。これをデバッグする方法さえ知りません。__constructor()
__constructor()
parent::__constructor();
CI_Lang
__construcotr()
EDIT2へのソリューション
私のコードには2つのコンストラクターがありました。それらをマージするだけです。