使用過CI框架,發(fā)現(xiàn)在控制器中加載模型很方便,直接使用$this->my_model_name->my_method(),即$this->[類庫名稱]->[類庫方法];我在自己搭建的一個框架中也想達(dá)到同樣效果,但是失敗,只能將new出來的類庫存入屬性中,再使用$this->model->my_method(),即$this->[類屬性名]->[類庫方法]。
考慮過使用可變變量,將傳入的類庫名存入屬性中,然后將new出來的對象存入該屬性的可變變量中,這樣$this->類庫名 就相當(dāng)于$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 的函數(shù)和類的方法中,超全局變量不能用作可變變量。$this 變量也是一個特殊變量,不能被動態(tài)引用。
這說明$this不能使用動態(tài)變量?
- 3 回答
- 0 關(guān)注
- 579 瀏覽
添加回答
舉報
0/150
提交
取消