使用过CI框架,发现在控制器中加载模型很方便,直接使用$this->my_model_name->my_method(),即$this->[类库名称]->[类库方法];我在自己搭建的一个框架中也想达到同样效果,但是失败,只能将new出来的类库存入属性中,再使用$this->model->my_method(),即$this->[类属性名]->[类库方法]。
考虑过使用可变变量,将传入的类库名存入属性中,然后将new出来的对象存入该属性的可变变量中,这样$this->类库名 就相当于$this->属性名了,都能得到new出来的对象,但是报错:
class A
{
public $libaray;
public function load($className)
{
//将类库名存入属性
$this->libaray = $className;
//获取类库的文件名/命名空间
$class = $className.'.php';
//将new出来的类库存入$libaray
$this->$libaray = new $class;
}
}
但是这样会报错,提示未定义变量$libaray,也就是在利用可变变量这里出错。是我对可变变量理解有问题吧?官方文档中说明:http://php.net/manual/zh/lang...
注意,在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。$this 变量也是一个特殊变量,不能被动态引用。
这说明$this不能使用动态变量?
3 回答
- 3 回答
- 0 关注
- 549 浏览
添加回答
举报
0/150
提交
取消