2012-05-28 5 views
0

Zend FW 1 및 PHPUnit 3.5.15를 사용하고 있습니다.PHPUnit이 호환되지 않는 정적 메소드 선언에 대해 불평하고 있습니다

부모 클래스에서 나는 public static function _doInsert(DomainObject $object)을 선언하고이를 하위 클래스에서 재정의했습니다.

자식 클래스의 메서드 서명에서 유일한 차이점은 DomainObject보다 구체적 인 개체 (DomainObjectChild)를 암시한다는 것입니다. 이것은 내 응용 프로그램이 간다면 오류가있는 PHPUnit 쵸크까지는 제대로 작동하는 것 같습니다. 그것은 자식 클래스의 메서드 선언이 부모 클래스의 선언과 호환되어야한다고 말합니다.

아이디어가 있나요?

답변

1

이것은 PHPUnit이 아닌 PHP에서 오는 E_STRICT 수준의 경고입니다. CLI 버전의 PHP (일반적으로 별도의 php.ini 파일이 있음) 또는 PHPUnit 구성에서 재정의되는 PHP 설정에 대한 error_reporting 설정을 확인하십시오.

코드에서 문제를 수정하여 경고를 제거하거나 PHPUnit에서 사용하는 error_reporting 수준을 변경할 수 있습니다.

+0

감사합니다. Tim, 그 자리에있었습니다. 이 아이디어가 E_STRICT 오류를 발생시키는 이유는 무엇입니까? –

+1

제 생각에 정적 메소드가 진정으로 오버라이드 될 수있는 [후기 정적 바인딩] (http://php.net/manual/en/language.oop5.late-static-bindings.php)을 추가하면 PHP는 서명은 "필요한 경우"와 일치합니다. –