2012-03-01 20 views
3

PHPクラスを拡張してカスタムメソッドを追加する方法を探しています。特に、MongoDate(PHP MongoDBドライバから)に日付形式のメソッドを追加したいと思います。PHP - クラスにメソッドを追加する

MongoDetectオブジェクトから受け取った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)を読んでください:-) –

+0

同じです、私は 'MongoCollection :: find (); 'も影響を受ける。私が新しいクラスにfindから受け取ったMongoDateをちょうどキャストすれば動作しますか? –

+1

ここでアダプターパターンがより適切かもしれません。それをチェックしてください:http://c2.com/cgi/wiki?AdapterPattern – MitMaro

答えて

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();' –

+0

構文エラーがあります。 –

+0

@PhilippSpießあなたは本当にあなたが試したこととあなたの質問にどのように出てきたのかを入れてください。そうすれば、人々はあなたをより良く助ける方法を知るでしょう。それは実際のコードを投稿してくださいと私たちはそれを見て、助けてくれると言われています。 – Iznogood

2

は、それを拡張します。基本的なOOP原則です。

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

これは、古いMongoDateクラスからすべてのパブリックおよび保護されたプロパティとメソッドを継承する新しいクラスNewClassを定義し、またnewFunction()機能が含まれています。

0

PHPドライバーが日付のために返すタイプを変更することはできませんので、lznogood &真実の答えができます。

関連する問題