2011-11-10 28 views
0

是否有可能從函數返回接口?例如:在PHP中返回一個接口?

interface DBInterface { 
    public function getDB(); 
    [...] 
} 

class Bar { 

    public function defineDBObject($name){ 
    return DBInterface; 
    } 
} 

我對此表示懷疑,但我有一個客戶喜歡編寫涉及它的規範文檔。我想確保它實際上是不可能的。

+0

AFAIK接口不能有實例。 – Robik

+3

最接近你可以得到的是返回一個實現該接口的對象 - 否則,不。 – BoltClock

+0

他是否打算返回實際的接口定義或實現該接口的對象? –

回答

3

你不能。你只能返回對象或原語。類和接口不是PHP中的對象。

0

您無法返回接口。你只能返回一個對象。你返回的對象可以實現一個特定的接口 - 因此實現了這些方法。

這是一個機制,它是從Java借來的來解決鑽石問題。

2

您可以返回代表接口的ReflectionClass實例。直接返回接口是不可能的。

+0

OP,IMO的最佳選擇。 –