2013-12-22 71 views
0

我發現了一些關於這個錯誤的信息,但我認爲這有些不同。我定義了一個公共變量。如何解決從空值創建默認對象?

Class Controller{  
    public $model; 

我試圖$model_name$this間添加額外的字(model)。

public function call_model($model_name){ 
$this->model->$model_name = new $model_class; 

什麼是解決方案?

編輯:

Warning: Creating default object from empty value in C:\xampp\htdocs\alisveris\project_library\Controller.php on line 16 
+0

什麼?如果你想擁有一個屬性'$ model',它本身具有屬性,它必須是一個對象本身 – kero

+0

然後我需要隱藏錯誤嗎?或刪除'模型'? –

+0

你的問題不清楚。請提供更多細節。 – chanchal118

回答

1

您可以創建靜態工廠方法來這樣建立不同的模型:

abstract class Model { 
static function CallModel($name) { 
    switch ($name) { 
    case 'Naomi': return new NaomiCampbell(); 
    case 'Anja': return new AnjaRubik(); 
    default: return new $name; 
    } 
} 
} 

class NaomiCampell extends Model {} 
class AnjaRubik extends Model {} 

然後使用:

$MyModel = Model::CallModel($name); 
+0

這看起來很有趣.. –

0

你可以做到這一點通過指定$模型變量爲$ this

class Db 
    { 
     public function great() 
     { 
      echo 'great'; 
     } 
    } 


class Controller{ 

    public $model; 

    public function __construct() 
    { 
     $this->model = $this; 

     $model_name = 'Db'; 
     $this->model->$model_name = new $model_name; 

    } 
} 

$cc = new Controller(); 

echo $cc->model->Db->great(); 

輸出

great 
相關問題