Сравнение абстрактного класса и интерфейса в PHP. В чем разница между абстрактным классом и интерфейсом в PHP? Это один из самых распространненых вопросов на собеседованиях.

В этом уроке вы узнаете некоторые важные различия между абстрактным классом и интерфейсом.

Позднее статическое связывание является очень важной концепцией в PHP. В этом уроке мы узнаем, что такое позднее статическое связывание и как использовать эту концепцию.

В PHP позднее статическое связывание используется для ссылки на вызываемый класс в контексте статического наследования.

Прежде чем углубиться в концепцию позднего статического связывания, давайте разберемся в разнице между self и static в PHP.

PHP изначально не задумывался как объектно-ориентированный язык программирования, но с годами был усовершенствован внедрением классов, пространств имен, интерфейсов, трейтов, абстрактных классов и других улучшений, которые помогают разработчикам писать на нем код с соблюдением принципов SOLID.

Популярное заблуждение заключается в том, что основная идея ООП — это повторное использования кода. Простой и, казалось бы, безобидный пример — это классические диаграммы, где вы наследуете от родительского класса "транспорт" и прокладываете свой путь вниз по иерархии, чтобы объявить все — от лодок до кораблей, от велосипедов до грузовиков.

Что такое "ошибка ERR_TOO_MANY_REDIRECTS"

Ошибка ERR_TOO_MANY_REDIRECTS ("Циклическое перенаправление на странице") или "redirect loop" ("цикл перенаправлений", "петля перенаправлений") возникает в случае, когда сервер поочередно перенаправляет клиента на разные адреса, последний из которых делает перенаправление на первый адрес, таким образом создавая бесконечный цикл перенаправлений. Чаще всего цикл не содержит большое количество адресов - обычно это 2 адреса которые перенаправляют клиента друг на друга, например https://www.example.com -> редирект -> https://example.com -> редирект -> https://www.example.com и так до бесконечности.

То, как браузеры планируют выполнение и затем выполняют скрипты, может влиять на производительность веб-страниц. Хотя такие техники, как <script defer> , <link rel = preload> (и подобные) влияют на загрузку скрипта, также полезным будет знание о том, как именно браузеры их интерпретируют. Благодаря Kouhei Ueno (разработчик в Google - прим. перев.) теперь у нас есть обновленная сводная таблица о планировании работы скриптов в Chrome.

В Debian 9 установлены сразу 2 версии Python (из разных веток).

На момент написания заметки они были представлены пакетами python, который соответствует версии 2.7.13 из ветки 2.*; и python3 — версия 3.5.3 из ветки 3.*.

Само собой, по умолчанию используется только какая-то одна из версий, и для Debian это более старая версия 2.7.

В новой версии Chrome автоматически активируется новая версия интерфейса со скруглёнными углами элементов (вкладок, кнопок, полей ввода и прочих). Для тех, кому подобное нововведение не понравилось, есть достаточно простой способ вернуть старую версию интерфейса.

В современном вебе, где сайты в среднем отправляют 500КБ сжатого JavaScript и 1,5 МБ изображений, работая при этом на Android-устройстве среднего уровня через 3G с лагом в 400мс, производительность CSS-селекторов является, наверное, наименьшей из существующих проблем.

И все же эта тема заслуживает обсуждения, хотя бы для того, чтобы развеять некоторые мифы и легенды, окружающие её. Итак, давайте рассмотрим проблему производительности CSS-селекторов подробнее.

В этом руководстве будут раскрыты различия, плюсы и минусы, а также выработаны рекомендации по использованию float, inline-block, display: table и flexbox при построении отзывчивых (responsive) CSS-макетов. Вот некоторые из методов, описанных в руководстве:

  • Выравнивание элементов, следующих бок о бок (друг за другом)
  • Последовательное расположение
  • Горизонтальное центрирование
  • Вертикальное центрирование
  • Выравнивание высоты элементов ряда
  • Передовые техники с использованием flexbox