2011-09-07 48 views
2

有沒有辦法編寫一個類似函數的類?我的意思是這樣的:被稱爲函數的PHP類

class test{} 
$test = new test; 
$test(); 

我與__call魔術方法試過,但在存在它的方法訪問時,它只能使用。也許可以使用SPL類或接口來完成?

+1

你想製作什麼? – binarious

+1

'$ someclass()'不是描述性的。它沒有以任何單一的方式描述你打算做什麼,給你的代碼讀者。函數名稱應該是描述性的,它們應該向你展示(並且代碼中的讀者不知道你的意圖,這可能在幾個月內就是你)。所以:想想你想做什麼,併爲它創建一個功能。 '$ test-> GetFoo()'或'$ test-> CreateBar()'顯示你在函數中做什麼,而不必看它。 – CodeCaster

+0

@CodeCaster你是對的,但它可以添加一個快捷方式的最重要的方法的功能,例如 – mck89

回答

5

使用__invoke magic method

class test{ 
    public function __invoke() 
    { 
     return 'fooo'; 
    } 
} 

$test = new test; 
print $test(); 

但是,你需要PHP 5.3本。

另一種替代方法取決於您嘗試執行的操作,可能是使用closure

+0

非常好的答案! –

+0

太棒了,那就是我一直在尋找的東西。謝謝。 – mck89