Ошибки для 5.2 в 5.3 уже не ошибки?

whirlwind

TDD infected, paranoid
Ошибки для 5.2 в 5.3 уже не ошибки?

этот код
PHP:
interface foo{
    function bar($flag);
}

class bar implements foo
{
    function bar($flag=true)
    {
    
    }
}
В пыхе 5.2.11 дает PHP Fatal error: Declaration of bar::bar() must be compatible with that of foo::bar() in /home/www/billing/test.php on line 7. А в 5.3 проглатывает нормально. Это баг или фича?
 

zerkms

TDD infected
Команда форума
а с точки зрения проектирования что тут неверно? принцип подстановки, вроде как, не нарушен (если его можно применять к интерфейсам и классам).
 

whirlwind

TDD infected, paranoid
Дык дело не в проектировании. На рабочей машинке сделали рефакторинг: перенесли метод из класса в интерфейс, там же под 3.5 тесты прошли, а вот на продакшене бага вылезла. Там тесты не запускаем, что бы не грузить, но видимо придется, а то нехорошо получилось.
 

Adelf

Administrator
Команда форума
А не кажется странным, что на тестовой машине и продакшене - разные PHP?
 

Beavis

Banned
whirlwind
ну ОС, mysql, php и веб-сервер хотя бы должны быть одинаковыми, а то что толку от такого dev-сервера если после него на продакшене может вообще не заработать?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Конечно, невозможно сделать точную копию продакшена, но уж версии php и mysql запросто можно
 

nerezus

Вселенский отказник
PS. Не порите чушь. У вас под каждый проект vds поднят с точной копией продакшена?
А вы поставьте на сервер J2EE, и поудивляйтесь, почему это не заработал код, который писали на тестовом на бейсике.
 

nerezus

Вселенский отказник
Ну вот вам и ответ, стоит ли переходить на 5.3
Странный вывод. Как по мне - так это ДОБАВЛЕНИЕ новой фишки. Ранее такое было невозможно.

Вот если бы сделали обратно, то рабочий код перестал бы работать и этим поломали бы совместимость.
 

whirlwind

TDD infected, paranoid
Если бы это было описано в документации, было бы вообще превосходно.
 
Сверху