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