PHP如何实现$this->[类库名称]->[类库方法]。

使用过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不能使用动态变量?

白衣染霜花
浏览 550回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP