После включения строгих предупреждений в PHP 5.2 я увидел загрузку строгих стандартов предупреждений из проекта, который был изначально написан без строгих предупреждений: Строгие стандарты : статическая функция. Программа :: getSelectSQL () не должна быть абстрактной в Program.class.inc Данная функция относится к абстрактной программе родительского класса и объявляется абстрактной статической, поскольку она должна быть реализована в […]
С PHPUnit и PHP> = 5.3 можно проверить защищенные методы. На следующей странице в stackoverflow описывается наилучшая практика: «Рекомендации по проверке защищенных методов с помощью PHPUnit» protected static function callProtectedMethod($name, $classname, $params) { $class = new ReflectionClass($classname); $method = $class->getMethod($name); $method->setAccessible(true); $obj = new $classname($params); return $method->invokeArgs($obj, $params); } Для тестирования открытых методов в абстрактных […]
Я создал абстрактный родительский класс и конкретный класс, который его расширяет. Почему родительский класс не может назвать абстрактную функцию? //foo.php <?php abstract class AbstractFoo{ abstract public static function foo(); public static function getFoo(){ return self::foo();//line 5 } } class ConcreteFoo extends AbstractFoo{ public static function foo(){ return "bar"; } } echo ConcreteFoo::getFoo(); ?> Ошибка: Неустранимая […]