我发现了一些有关此错误的信息,但我认为这有点不同。我定义了一个公共变量。
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
答案 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