0

これはコードです:

class app {
    public $conf = array();
    public function init(){
       global $conf;
       $conf['theme']   = 'default';
       $conf['favicon'] = 'favicon.ico';
    }
    public function site_title(){
        return 'title';
    }
}

$app = new app;
$app->init();


//output
echo $app->conf['theme'];

そして、私はこのエラーを受け取ります:

Notice: Undefined index: theme in C:\xampp\htdocs\...\trunk\test.php on line 21

どこが間違っていましたか?同じ結果を得る簡単な方法はありますか?

4

2 に答える 2

2

オブジェクトのプロパティではなく、別のグローバル変数を設定しています。使用$this:

class app {
    public $conf = array();
    public function init(){
       $this->conf['theme']   = 'default';
       $this->conf['favicon'] = 'favicon.ico';
    }
    public function site_title(){
        return 'title';
    }
}
$app = new app;
$app->init();

//output
echo $app->conf['theme'];
于 2012-04-18T03:51:03.297 に答える
2

あなたは OOP の素晴らしい世界にいます。もう を使う必要はありませんglobal!

これを試して:

class app
{
    public $conf = array();

    // Notice this method will be called every time the object is isntantiated
    // So you do not need to call init(), you can if you want, but this saves
    // you a step
    public function __construct()
    {       
        // If you are accessing any member attributes, you MUST use `$this` keyword
        $this->conf['theme']   = 'default';
        $this->conf['favicon'] = 'favicon.ico';
    }
}

$app = new app;

//output
echo $app->conf['theme'];
于 2012-04-18T03:52:39.583 に答える