2014-07-08 103 views
0

讓我們來想象我有這個功能調用同一個類中2個相同的函數入口

class xx { 
    function one() { 
     echo "hello"; 
    } 
    function two() { 
     echo "how are you"; 
    } 
} 

如果我這樣做

$call = new xx; 
$call->one(); 

這將打印你好 在頁面上,但如果我想打印你好你怎麼能我做這樣的事情?

$call->one()->two(); 

???因爲我試過了,它只打印出我你好,我怎麼能只用一句話來稱呼第二個功能? 也tryed

$call = new xx(); 
$calboth = $call->one(); 

$callboth->two(); 

但只打印hellohello無論如何,所以我該怎麼辦呢?打印兩個? 我的觀點不是打印,而是讓兩個功能在同一通話中工作

例如功能dbconnect和登錄或dbconnect和註冊,

$login = new system; 
$login->dbconnect()->login(); 

感謝所有awnsers

+1

首先暗示:'$呼叫 - >一個() - >兩()'是等效於此的表達式:'$ TMP = $呼叫 - >一個() ; $ tmp-> two();'推測'$ tmp'是'null','null'沒有定義方法'two()'。 – zerkms

回答

4

要鏈接的方法,你需要返回的類的實例:

class xx { 
    function one() { 
     echo "hello"; 
     return $this; 
    } 
    function two() { 
     echo "how are you"; 
     return $this; 
    } 
} 

然後這應該工作:

$call = new xx; 
$call->one()->two(); 
相關問題