2012-07-07 6 views
0

PHP로 OOP에 들어가기 직전에 우연히 발견 한 함수 정의의 이름 앞에 객체 유형을 넣으면 IDE가 객체의 멤버 함수와 데이터 멤버를 확인할 수 있습니다. 예를 들어함수 인수에 대한 객체 유형 지정?

:

public function foo(car $car) { }

반대로 :

public function foo($car) { }

합법적 바람직한 첫번째 방법? :-)

답변

3

확실히 멍청한 놈을 돕는

감사 : Type Hinting. PHP 자체와 IDE의 기능으로 인해 더 유용한 코드 완성을 얻는 데 도움이됩니다. 그것을 밖으로 시도하고 잘못된 유형의 개체를 전달하십시오. 이렇게하면 버그 유형을 발견하는 데 도움이됩니다. 버그는 메소드에 전달 된 잘못된 유형의 결과입니다.

class A{} 
class B{} 
function foo(A $a) { echo "OK";} 
foo(new A); 
foo(new B); 

또한 doccomments (죄송합니다, 링크 없음)를 살펴보십시오. 대부분의 IDE는 추가 코드 완성 제안을 위해이 코드를 읽고 사용할 수 있습니다.

/** 
* @return MyObject 
*/ 
function bar(){/* ..*/}; 
bar()->[Strg-Space] 
1

실제로 가장 좋은 방법은 특정 클래스 이름이 아닌 interface을 암시하는 것입니다. 이것은 객체 지향 애플리케이션 설계에서 Interface Segregation Principle으로 돌아갑니다.

즉, 개체를 삽입 할 때 해당 메서드가 호출 할 수있는 특정 메서드 풋 프린트를 가질 것으로 예상해야합니다. 어떻게 다형성이 작동하는지.

관련 문제