新學(xué)習(xí)PHP, 對php訪問類屬性$this->name,$this->age,$this->getName()等可能會比較容易理解接受, 但看到$this->db->query()這種用法往往會比較困惑, 感覺有些怪怪的, 為什么會有連續(xù)"->"的用法呢?
其實, 這個也不是很難, 當(dāng)$this->db = new Db()這樣操作后, 那么$this->db整個就是一個實例化對象了, 所以, 就可以通過$this->db->query()這里訪問Db類里面的方法了, 基本上一些PHP框架的控制器都是按照這種原理來寫的,具體可以看下面的例子.
1. db.php文件代碼[將在構(gòu)造函數(shù)中被實例化的類文件]
class db{ public function query(){ echo "實際代碼自行腦補"; } }2. Controller.php文件
header("Content-Type: text/html; charset=UTF-8"); include("db.php"); class Controller{ public $db; public function __construct(){ $this->db = new db(); //$this->db被賦值一個實例化對象, 所以子類就可以通過$this->db->query()來訪問了,之前的PHP框架可以在控制器中如此調(diào)用如:$this->db->query();$this->load->help()等, 實際上都是利用的這樣一個原理
} } class Test extends Controller{ public function getAll(){ $this->db->query(); //因為父類實現(xiàn)了 對 類屬性 $db 實例化 賦值, 所以 //所以這里$this->db是一個實例化對象, 故而可以直接訪問對象的方法 } } //$test = new Test(); //$test->db->query();