如何解决从空值创建默认对象?

时间:2013-12-22 14:12:59

标签: php php-5.3

我发现了一些有关此错误的信息,但我认为这有点不同。我定义了一个公共变量。

Class Controller{    
    public $model;

我正在尝试在model$model_name之间添加额外的字词$this

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您可以通过将$ model变量分配给$ 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