Пятиминутка PHP
2.87K subscribers
334 photos
26 videos
826 links
Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps

Автор: @petrmyazin
Download Telegram
250+ вопросов с собеседований по PHP. Три блока: для уровня Junior, Middle и Senior: http://amp.gs/6gZS
Forwarded from Проветримся!
я обычно не перепащиваю свои же посты, но тут дело полезное

Собрал отличный квест на выходные.

Идём по ссылке. Читаем, как предлагается регулировать просветительскую деятельность. Убеждаемся, что в текущей редакции данный акт противоречит конституции Российской Федерации (29. 4).
"Каждый имеет право свободно искать, получать, передавать, производить и распространять информацию любым законным способом."

Логинимся через Госуслуги.

Нажимаем дизлайк.

Вносим предложение:
Пункт 4 данного акта в текущем виде противоречит ст. 29 Конституции РФ, предусматривающей право свободно делиться любой информацией, прямо не запрещённой Конституцией и федеральными законами.
Предлагаю дополнить пункт 4:
"Просветительская деятельность, осуществляемая вне образовательных, научных и культурных организаций, не требует заключения вышеозначенного договора и может осуществляться самим субъектом просветительской деятельности."

Спасибо.
Что произойдёт, если сделать unset свойству класса?

- Для не типизированных свойств попытка чтения вызовет лишь Warning и вернёт NULL;

- Но если свойство типизировано, то оно перейдёт в состояние uninitialized и попытка чтения вызовет Fatal error.

http://amp.gs/6KMW
В PHP 8.0 можно передавать аргументы в функцию по имени (вне зависимости от позиции).

Но можно и комбинировать: сначала позиционные аргументы, затем именованные.

Настоящий взрыв мозга - это совместить с распаковкой из массива ...$args 🤯

http://amp.gs/63fd
https://www.youtube.com/watch?v=ZsHMHukIlJY - видео доклада про важность оформления кода, 530тыс просмотров!

Покажу несколько слайдов:
Вчера прочитал книгу Frontline PHP — Building modern applications with PHP 8: https://front-line-php.com/.

По большей части это сборник статей из блогов https://stitcher.io/ и https://freek.dev/.

Читается легко и понятно, очень доступный английский. Первые две части просто отличные, но в третьей части «PHP in Depth» слишком поверхностный материал. Возможно, авторы не хотели переусложнять, либо поленились, либо сами пока не углублялись, но написать что-то надо было.

Надеюсь, книга будет «живой», т.е. дополняться материалом и углубляться. Кроме того, осенью нас уже ждёт PHP 8.1!

Книга платная, цена зависти от страны, для России около 1000р. Если цена кусается, рекомендую просто прочитать два упомянутых выше блога — бесплатно. Кстати, некоторые статьи из них есть в переводе на Хабре.
Forwarded from PHPFest / 23-24 октября 2021
Опубликовали записи PHPFest 2020 💥

К чёрту всё! Эти затянувшиеся майские требуют радикальных решений. Радикально решили и опубликовали все записи с PHPFest 2020 на Ютьюб.

Две ссылки:
PHP по-русски
PHP по-английски

Приятного просмотра и до встречи после майских 🍿
Приглашаю на PHP-митап в Казани 15 мая (суббота):
— Превращаем PHP-скрипты в статические бинарники
— Как писать тесты, чтобы больше радоваться
— ООП и трейты
— DevOps без docker и kubernetes
— переход с PHP-монолита на микросервисы на Go

http://amp.gs/6wWw
Прочитал книгу «Элегантные объекты» Егора Бугаенко: http://amp.gs/6WRa

Автор описывает свой взгляд на «правильное ООП», даёт практические рекомендации и показывает наглядные примеры, итоговая цель которых — хорошо поддерживаемый код! Я полностью разделяю эту ценность: поддерживаемость — это одна из важнейших характеристик кода.

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

А также, чего следует избегать при написании поддерживаемого кода: недостатки моков, проблемы статических методов, классов-утилит и синглтонов, NPE ошибка и применение null vs optional vs пустой объект.

Кстати, интересный вопрос, над которым я раньше не думал: чем отличаются синглтоны и классы, целиком состоящие из статических методов? Синглтон в тестах можно подменить, если есть метод `setInstance()`.

Но есть много радикальных идей, которые вызывали у меня сопротивление и отрицание.

На сколько я понял, материал книги основан на блоге автора: http://amp.gs/6WRo. Зачастую, когда у меня возникал очередной вопрос-возражение, в конце главы я обнаруживал свой вопрос в виде вставленного комментария от одного из читателей блога и тут же ответ Егора. Удивительно, на сколько мои вопросы совпадали с приведёнными комментариями. К сожалению, ответы меня так и не убедили, многие вопросы остались. Чтобы лучше прояснить позицию Егора, думаю, стоит более глубоко изучить его блог, почитать комментарии, возможно влиться в тусовку в телеграме http://amp.gs/6WRM и http://amp.gs/6WRc.

В итоге, станет ли код более поддерживаемым, если писать ПОЛНОСТЬЮ по описанным рекомендациям? Книга меня не убедила. Но, по крайней мере, я получил удовольствие от чтения. Рекомендую.
Рецензия на рецензию!
Forwarded from adelf on programming
Пётр Мязин, автор пятиминутки PHP, добрался до книги Бугаенко "Элегантные объекты" (https://t.me/tg_5minphp/827). Как у любого разумного человека, у него возникло много возражений. Там предлагается много радикальных вещей, и мало кто согласится свой продакшен код серьезного проекта подвергать таким изменениям.

Смысл в том, что к книге надо относиться не как к руководству к действиям, а как к сборнику вопросов к вашему коду. Могу подсказать прямой аналог - объектная гимнастика. Оригинал статьи, перевод на хабре. Там тоже очень интересные и радикальные практики (достаточно даже одного "не больше двух полей на класс"), но не надо бежать и начинать их применять в своём коде. Надо просто задуматься "как изменился бы мой код, если бы пришлось разрабатывать с такими ограничениями?". Среди возникших в голове изменений могут найтись те, которые сделают ваш код намного более объектным, более связным, менее связанным и т.д. И вот эти изменения вполне можно и внедрять.

Полностью же писать код используя эти практики можно лишь на тренировочном проекте, развивая свои ООП-навыки. На следующей неделе на оффлайн митапе в Казани буду делать доклад и в самом начале буду говорить о том же самом. Об этом еще напишу.