2013-12-22 5 views
0

이 오류에 대해 뭔가 알게되었지만 조금 다릅니다. 공용 변수를 정의했습니다.해결 방법 빈 값에서 기본 객체 만들기?

Class Controller{  
    public $model; 

그리고 $model_name$this 사이에 추가 단어 (model)를 추가하려고 해요.

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

해결책은 무엇입니까?

편집 : 그런 다음 사용

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

무엇입니까? '$ model' 속성을 갖고 싶다면 객체 자체가 필요합니다 – kero

+0

그러면 오류를 숨길 필요가 있습니까? 또는 '모델'을 삭제 하시겠습니까? –

+0

문제가 명확하지 않습니다. 자세한 내용을 입력하십시오. – chanchal118

답변

1

당신은 다음과 같이 서로 다른 모델을 만드는 정적 팩토리 메소드를 만들 수 있습니다 $ 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 
+0

이것은 흥미로운 것 같습니다. –

0

당신은 그것을 할 수 $을 할당하여

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