2012-03-01 3 views
3

사용자 정의 메서드를 추가하기 위해 PHP 클래스를 확장하는 방법을 찾고 있습니다. 특히 MongoDate (PHP MongoDB 드라이버에서)에 날짜 형식 메서드를 추가하려고합니다.PHP - 클래스에 메서드 추가

몽고 콜렉션에서받은 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();'도 영향을받습니다. 내가 발견 한 것에서받은 새로운 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 & 진리의 답변이 최선입니다.

관련 문제