2012-03-01 31 views
3

我正在尋找一種擴展PHP類以添加自定義方法的方法。特別是我想爲MongoDate添加一個日期格式方法(來自PHP MongoDB驅動程序)。PHP - 向類中添加方法

我只是認爲它會更清潔,如果從Mongo收集中收到的MongoDate對象提供了一種方法來使其可讀,而不需要調用函數或類來做到這一點。

$d = new MongoDate(); 

some_date_format($d); // the way it works now 

$d->format(); // the way it would be cleaner 

有沒有解決方法?

+0

閱讀[php object inheritance](http://php.net/manual/en/language.oop5.inheritance.php):-) – 2012-03-01 21:20:52

+0

同樣在這裏,我想從MongoCollection :: find ();'也會受到影響。如果我只是將從find中得到的MongoDate投給我的新類,它是否工作? – 2012-03-01 21:22:48

+1

這裏的適配器模式可能更合適。檢查出來:http://c2.com/cgi/wiki?AdapterPattern – MitMaro 2012-03-01 21:24:02

回答

5

從它繼承!

class myClass extends MongoDate{ 
    public function format(){ 
    } 
} 

然後付諸實施吧:

$d = new myClass(); 

some_date_format($d); // the way it works now 

$d->format(); // the way it would be cleaner 
+0

我想過它,但這不會影響我從'MongoCollection :: find();' – 2012-03-01 21:21:05

+0

你有語法錯誤。 – 2012-03-01 21:22:07

+0

@PhilippSpieß你應該真的把你的嘗試和它是如何出現在你的問題。這樣人們就會知道如何更好地幫助你。這是說,請張貼真實的代碼,我們會看看它和幫助。 – Iznogood 2012-03-01 21:22:52

2

擴展它。這是一個基本的面向對象原則。

class NewClass extends MongoDate { 
    public function newFunction(){ 
     //Stuff here. 
    } 
} 

這將定義一個新類NewClass將繼承老MongoDate類的所有公共和受保護的屬性和方法,同時還將有包括newFunction()功能。

0

您無法更改PHP驅動程序返回的日期類型,因此lznogood &真相的答案是您可以做的最好的答案。