Model('seo')->type('index')->show();
最後翻譯一下
回複討論(解決方案)
Model('seo') 得到一個 seo 對象
->type('index') 執行 seo 對象的 type 方法
->show(); 執行 seo 對象的 show 方法
Model('seo') 得到一個 seo 對象
->type('index') 執行 seo 對象的 type 方法
->show(); 執行 seo 對象的 show 方法
我的疑惑是,為啥用兩個箭頭呢,那樣符合文法規範嗎,因為我的理解 Model('seo')->type('index')
它是對象執行個體化後調用的一個方法,而它後面又再調用一個方法,但是 Model('seo')->type('index')
它此時可不是對象啊,怎麼能行呢
如果能連續用箭頭的話,那麼一個類中有很多方法,是不是說,能用一長串箭頭調用的寫法呢
Model('seo') 得到一個 seo 對象
->type('index') 執行 seo 對象的 type 方法
->show(); 執行 seo 對象的 show 方法
我的疑惑是,為啥用兩個箭頭呢,那樣符合文法規範嗎,因為我的理解 Model('seo')->type('index')
它是對象執行個體化後調用的一個方法,而它後面又再調用一個方法,但是 Model('seo')->type('index')
它此時可不是對象啊,怎麼能行呢
調用的方法 返回 $this 即可這樣級聯
class Orange{ public function a(){ echo "a"; return $this; } public function b(){ echo "b"; return $this; } public function c(){ echo "c"; return $this; }}$orange = new Orange();$orange->a()->c()->b();
acb
只要這些函數(方法)返回的是對象,就可以用這種連續操作的寫法
但是Model('seo')->type('index') 它此時可不是對象啊
你怎麼知道他不是對象?
突然明白了!原來javascript中的連綴就是用的這個原理。
突然明白了!原來javascript中的連綴就是用的這個原理。
只不過javascript中用的是 點而不是 箭頭罷 了