Liskov Substitution Principle
Пятиминутка PHP
Принцип подстановки Барбары Лисков
- https://ru.wikipedia.org/wiki/Принцип_подстановки_Барбары_Лисков
Это гостевой выпуск Пятиминутки PHP - ведёт Кирилл Сулимовский
- https://www.linkedin.com/in/кирилл-сулимовский-57a697b6/
Также порекомендую подписаться на телеграм канал Кирилла
- https://t.me/beerphp
Кстати, вы тоже можете принять участие в записи подкаста, инструкции здесь:
- https://5minphp.ru/join/
- https://ru.wikipedia.org/wiki/Принцип_подстановки_Барбары_Лисков
Это гостевой выпуск Пятиминутки PHP - ведёт Кирилл Сулимовский
- https://www.linkedin.com/in/кирилл-сулимовский-57a697b6/
Также порекомендую подписаться на телеграм канал Кирилла
- https://t.me/beerphp
Кстати, вы тоже можете принять участие в записи подкаста, инструкции здесь:
- https://5minphp.ru/join/
250+ вопросов с собеседований по PHP. Три блока: для уровня Junior, Middle и Senior: http://amp.gs/6gZS
Forwarded from Проветримся!
я обычно не перепащиваю свои же посты, но тут дело полезное
Собрал отличный квест на выходные.
Идём по ссылке. Читаем, как предлагается регулировать просветительскую деятельность. Убеждаемся, что в текущей редакции данный акт противоречит конституции Российской Федерации (29. 4).
"Каждый имеет право свободно искать, получать, передавать, производить и распространять информацию любым законным способом."
Логинимся через Госуслуги.
Нажимаем дизлайк.
Вносим предложение:
Пункт 4 данного акта в текущем виде противоречит ст. 29 Конституции РФ, предусматривающей право свободно делиться любой информацией, прямо не запрещённой Конституцией и федеральными законами.
Предлагаю дополнить пункт 4:
"Просветительская деятельность, осуществляемая вне образовательных, научных и культурных организаций, не требует заключения вышеозначенного договора и может осуществляться самим субъектом просветительской деятельности."
Спасибо.
Собрал отличный квест на выходные.
Идём по ссылке. Читаем, как предлагается регулировать просветительскую деятельность. Убеждаемся, что в текущей редакции данный акт противоречит конституции Российской Федерации (29. 4).
"Каждый имеет право свободно искать, получать, передавать, производить и распространять информацию любым законным способом."
Логинимся через Госуслуги.
Нажимаем дизлайк.
Вносим предложение:
Пункт 4 данного акта в текущем виде противоречит ст. 29 Конституции РФ, предусматривающей право свободно делиться любой информацией, прямо не запрещённой Конституцией и федеральными законами.
Предлагаю дополнить пункт 4:
"Просветительская деятельность, осуществляемая вне образовательных, научных и культурных организаций, не требует заключения вышеозначенного договора и может осуществляться самим субъектом просветительской деятельности."
Спасибо.
Что произойдёт, если сделать unset свойству класса?
- Для не типизированных свойств попытка чтения вызовет лишь Warning и вернёт NULL;
- Но если свойство типизировано, то оно перейдёт в состояние uninitialized и попытка чтения вызовет Fatal error.
http://amp.gs/6KMW
- Для не типизированных свойств попытка чтения вызовет лишь Warning и вернёт NULL;
- Но если свойство типизировано, то оно перейдёт в состояние uninitialized и попытка чтения вызовет Fatal error.
http://amp.gs/6KMW
В PHP 8.0 можно передавать аргументы в функцию по имени (вне зависимости от позиции).
Но можно и комбинировать: сначала позиционные аргументы, затем именованные.
Настоящий взрыв мозга - это совместить с распаковкой из массива ...$args 🤯
http://amp.gs/63fd
Но можно и комбинировать: сначала позиционные аргументы, затем именованные.
Настоящий взрыв мозга - это совместить с распаковкой из массива ...$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р. Если цена кусается, рекомендую просто прочитать два упомянутых выше блога — бесплатно. Кстати, некоторые статьи из них есть в переводе на Хабре.
По большей части это сборник статей из блогов 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 по-английски
Приятного просмотра и до встречи после майских 🍿
К чёрту всё! Эти затянувшиеся майские требуют радикальных решений. Радикально решили и опубликовали все записи с PHPFest 2020 на Ютьюб.
Две ссылки:
— PHP по-русски
— PHP по-английски
Приятного просмотра и до встречи после майских 🍿
Приглашаю на PHP-митап в Казани 15 мая (суббота):
— Превращаем PHP-скрипты в статические бинарники
— Как писать тесты, чтобы больше радоваться
— ООП и трейты
— DevOps без docker и kubernetes
— переход с PHP-монолита на микросервисы на Go
http://amp.gs/6wWw
— Превращаем 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.
В итоге, станет ли код более поддерживаемым, если писать ПОЛНОСТЬЮ по описанным рекомендациям? Книга меня не убедила. Но, по крайней мере, я получил удовольствие от чтения. Рекомендую.
Автор описывает свой взгляд на «правильное ООП», даёт практические рекомендации и показывает наглядные примеры, итоговая цель которых — хорошо поддерживаемый код! Я полностью разделяю эту ценность: поддерживаемость — это одна из важнейших характеристик кода.
Например, из хорошо известных и зарекомендовавших себя практик, в книге описаны преимущества неизменяемых объектов, разделение на команды и запросы, понятные советы по именованию классов и методов, разделение больших классов на маленькие, более сфокусированные, тесты как документация, внедрение зависимостей и инверсия управления.
А также, чего следует избегать при написании поддерживаемого кода: недостатки моков, проблемы статических методов, классов-утилит и синглтонов, NPE ошибка и применение null vs optional vs пустой объект.
Кстати, интересный вопрос, над которым я раньше не думал: чем отличаются синглтоны и классы, целиком состоящие из статических методов? Синглтон в тестах можно подменить, если есть метод `setInstance()`.
Но есть много радикальных идей, которые вызывали у меня сопротивление и отрицание.
На сколько я понял, материал книги основан на блоге автора: http://amp.gs/6WRo. Зачастую, когда у меня возникал очередной вопрос-возражение, в конце главы я обнаруживал свой вопрос в виде вставленного комментария от одного из читателей блога и тут же ответ Егора. Удивительно, на сколько мои вопросы совпадали с приведёнными комментариями. К сожалению, ответы меня так и не убедили, многие вопросы остались. Чтобы лучше прояснить позицию Егора, думаю, стоит более глубоко изучить его блог, почитать комментарии, возможно влиться в тусовку в телеграме http://amp.gs/6WRM и http://amp.gs/6WRc.
В итоге, станет ли код более поддерживаемым, если писать ПОЛНОСТЬЮ по описанным рекомендациям? Книга меня не убедила. Но, по крайней мере, я получил удовольствие от чтения. Рекомендую.