Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
перечитайте еще раз вот эту страницу: http://php.net/manual/ru/migration70.incompatible.php
$ sudo apt update
и вуаля — вы на заветной «семерке».
и ведь работал же?! Зачем сломали? Почему магазин не работает! Слыш, чувак, я клиентов теряю!
У самого большой проект на дебиане под который просто нет 7-й версии, приходится жить на 5.6 :(
это говнокодерство, пользоваться лазейками совместимости, чтобы расширять функциональность
Интерфейс должен скрупулезно совпадать с реализацией
Давно заметил, что тесты проходят, если реализация интерфейса добавляет дефолтное значение. Но я ругаюсь на такое
Ну ок, например есть интерфейс отрисовки "фигур", некий упрощенный кусок проекта с планировками зданий:
interface DrawShapesInterface {
public function drawCircle(int $x, int $y);
// ... прочие фигуры аналогично
}
Потом некий умник делает следующее, ведь PHP позволяет:
class SimpleDrawer implements DrawShapesInterface {
public function drawCircle(int $x, int $y, ...$args)
{
// отрисовка, которая зависит от дополнительных аргументов:
// кисти, параметры цвета и т.п.
// ведь так просто подсунуть в интерфейс еще и прицеп
}
}
Потом получается целая система умолчаний и подразумеваемых параметров, которые передаются нелегально, в обход декларации.
Готовимся к собеседованию по PHP: Всё, что вы хотели узнать об интерфейсах, совместимости сигнатур и не побоялись узнать