PHP.today
3.76K subscribers
12 photos
4 files
236 links
Самые свежие новости из мира PHP. Обновленные стандарты. Лучшие практики с примерами кода. Как писать чистый, читаемый и понятный код.
Чат тут https://tttttt.me/all_it_ru
Download Telegram
Какими PHP фреймворками вы пользуетесь чаще всего?
Anonymous Poll
22%
Symfony
42%
Laravel
15%
Yii
0%
CakePHP
2%
CodeIgniter
2%
Zend
1%
Phalcon
5%
Другой
11%
Не пользуюсь
Довольно занимательная статейка на тему "Как хранить перечисления в PHP, чтобы это было удобно". Есть ограниченный список значений? Нет Enum, к которому ты так привык в другом языке? В статье, на мой взгляд, лучшая реализация таких списков.

#php #перечисления #enum

https://telegra.ph/Perechisleniya-v-PHP-09-14
Хэй хо! Все мы любим (я надеюсь), писать юнит-тесты. Ну и конечно же - потешить свое самолюбие, глянув на отчет code-coverage, когда там >50% кода покрыто тестами. Но так ли точна эта цифра? Давайте разберемся, как работают замеры и какие есть подводные камни.

#phpunit #unittest #codecoverage

https://telegra.ph/Uluchsheniya-pokrytiya-PHP-koda-v-2020-godu-09-18
Этой весной я перевел статью о 8-ке в восьми кусочках кода, а на этой неделе состоится ее долгожданный релиз.

Если ты хочешь пообщаться с одними из главных контрибьюторов PHP Никитой Поповым и Дмитрием Стоговым, а также послушать о новых возможностях языка на практике - заходи на стрим 25 ноября.

Подробная программа тут.
Сталкивались с таким, что требуется отрефакторить чего-то, или пофиксить багу, а там ну просто целый зоопарк наследников и наследников наследников? Ну или простая задача - нужен новый аргумент в конструкторе/методе. И задача превращается в ад. Это один из пунктиков, почему наследование стоит использовать осторожно, и композиция зачастую лучшее решение.

И вот вам статейка на смежную тему.

#php #final

https://telegra.ph/Finalnye-klassy-v-PHP-Java-i-drugih-yazykah-12-01
Как часто вы сталкиваетесь с проблемой, когда для тестирования задачи приходится менять код? Тесты отложенной отправки письма, генерации чего-то по расписанию раз в неделю и т.д.

Badoo имеет свое собственное решение, которое упрощает жизнь тестировщикам.

#php #QAAPI #trick

Все тут:
https://telegra.ph/API-dlya-QA-testiruem-fichi-bez-dostupa-k-kodu-12-01
🔥 Трейты! Выстрел себе в ногу или рабочее решение? — ютуб-холивар в эту среду.

На примерах разберем, хороши ли трейты как способ снизить дублирование кода, быстро внедрить функциональность и не только. Читай подробнее о стриме и приходи в эфир 23 декабря в 19:00 (Мск/Минск, 18:00 — Киев).

Против трейтов: Валентин Удальцов (автор канала Пых).

В защиту:
— Сергей Жук (Skyeng)
— Кирилл Несмеянов (SpiralScout)
— Иван Лещёв (BotHelp.iо)
— Александр Дубовской (RaDon)

Ведущий: Роман Пронский (PHP Digest).
В начале месяца под одним из постов задали вопрос:
Композиция === Dependency Injection?

Я тогда еще написал статейку, но все руки не доходили выложить ее сюда. Я постарался подробно объяснить, в чем разница и как использовать: Dependency Injection (Внедрение зависимостей), Dependency Inversion (Инверсия зависимостей) и Композиция.

#solid #di #composition #архитектура

https://telegra.ph/Uluchshaem-arhitekturu-Inversiya-i-vnedrenie-zavisimostej-nasledovanie-i-kompoziciya-12-30
🎄🐘 Подводим итоги PHP-года и разыгрываем слона

Вместе с PHP-Дайджестом придумали опрос про 2020 год и PHP-сообщество. Приходи выбрать фреймворк года, персону года и самый огненный стрим.

По итогам сделаем подборки статей, докладов, каналов по PHP. Все результаты опубликуем на phpcommunity.ru и в статье на Хабре.

Опрос анонимный: оставляйте почту, только если хотите поучаствовать в розыгрыше фирменного пхп-слона.
Фронт для прожженного бэка

Всем привет. Данный пост подойдет новичкам, или прожженным бэкендерам, которым проще написать на го или джаве, чем на js/css. Когда вообще появилось это разделение на Front и Back? Только только у нас в команде был верстальщик, который особо и программистом то не выглядел, и вот вдруг React, Angular, TypeScript, а кто не успел - теперь Backend разработчик.

Так что делать, если ты бэкэнд до мозга костей, а пет проект, под капотом выглядящий великолепно(нет), с фронта похож на сайты из 2000х?

1. Twitter bootstrap. Содержит множество полезных симпатичных элементов из коробки. И хоть фронты сейчас начнут кидаться ссаными тапками (и тряпками), потому что бутстрап - это только скелет, лэйаут, грид, etc на котором нужно строить свое приложение, но для нас это просто палочка-выручалочка, если нужно придать человеческий вид своему детищу.

2. Vue JS Если надоело писать говнокод на jQuery для того, чтобы например показать форму редактирования прямо на строке в гриде, и после того как все заработало от одного вида этого куска кхм хочется принять валокордин - есть великолепная припарка - Vue JS.
Он выглядит так, как будто он написан бэкэндерами для бэкэндеров, чтобы последние хоть как-то могли похвастаться тем, что знают js фреймворк, и гордо называть себя full stackами. В нем нет этого бардака jquery, и нет тонн синтаксического сахара и абстракций type script. Все бесподобно просто и понятно, как php, и приправлено отличной подробной докой.

3. А для тех, кому нужно и то и то - вот bootstrap-vue.org
Сам не пробовал, но раз поддерживаются последние версии и того и другого - значит проект живой и свежий.

Эхх, за что я любил Yii 1 в лохматом 2012 - так это за коробочный неплохой внешний вид, и включение аякса на гриде одним параметром. Теперь такого не делают))

Вместо послесловия

Ну и раз зашел разговор про сервера: я давно забил на хостинги. По цене они не намного выигрывают у vds/vps а ограничений масса. Да и я считаю что каждый уважающий себя php разработчик должен уметь развернуть php+nginx+db на чистой машине, ну и прекрасно знать что такое ssh, sudo, и почему нельзя запускать nginx под рутом.

Так вот, я уже лет 7 пользуюсь digitalOcean, 5$ в месяц и все мои пет-проекты прекрасно живут на выделенной виртуалке. И по этому случаю держите реферальную ссылку https://m.do.co/c/a2a1a8f9796f , которая не только мне согреет лапу, но и даст вам 100$ на 60 дней потестить и решить, нужно ли оно вам вообще. Они зажмыдились, раньше давали 25$ навсегда (а это, на минуточку, 5 месяцев халявного пятибаксового сервера) а сейчас 100$ но всего на 2 месяца, но это ж все-таки лучше, чем ничего))

Добавил реакции, хочу получить фидбэк, полезно ли, или больше такое не писать.
​​Только-только я расстроился, т.к. уже конец января, а от badoo ни слова о ежегодном конкурсе (для тех, кто не в курсе: они каждый год выкладывают пачку задач на hackerrank, и если ты решил хорошо - зовут на собес, а там и в Лондон, на работу), так сразу нашел, чем потешить свое ЧСВ.

Обнаружил, что в linkedin появились значки вида “знаток PHP”, и, чтобы получить их, нужно пройти небольшой тест. Например, тест по PHP состоял из 15 вопросов, на каждый из которых давалось 1,5 минуты. Если зафейлил - есть возможность пройти тест еще раз(не знаю, с такими же вопросами или другими, но лично я бы сделал с другими, иначе какой смысл).

Сами вопросы были простецкие, ответы выбираются из готовых четырех-пяти. Единственный вопрос, который чуть не обнулил мой таймер в 1.5 минуты - про форматирование времени: ну не помню я наизусть всех модификаторов=) в итоге ответил интуитивно, и вроде как правильно.

В общем, всем рекомендую! И делитесь своими результатами в комментариях, интересно, кто как прошел.
Откопал пару задачек на алгоритмы в интернетах, предлагаю вам их решить, ответы пишите в комменты. Ну и ставьте плюс в комменты, если хотите больше задачек.
———————
Задача 1.
Во вре­мя пере­ез­да в квар­ти­ре появи­лось 5 пустых коро­бок, и кот стал в них спать. На каж­дой короб­ке напи­са­на своя циф­ра, от 1 до 5, а сами короб­ки сто­ят в ряд по порядку.

Наут­ро кот выле­за­ет из оче­ред­ной короб­ки, а на ночь пере­хо­дит спать в сосед­нюю спра­ва или сле­ва, кото­рая сто­ит рядом с той, где он ноче­вал в про­шлый раз. Каж­дое утро мож­но открыть толь­ко одну короб­ку, что­бы про­ве­рить, есть ли там кот.

Есть ли такая стра­те­гия, что­бы гаран­ти­ро­ван­но най­ти кота в какое-нибудь утро, если мы не зна­ем, в какую короб­ку он пошёл спать в первую ночь?
———————
Задача 2.
Пред­ставь­те, что у вас есть элек­три­че­ская духов­ка с одной меха­ни­че­ской кноп­кой. Кноп­ка по оче­ре­ди вклю­ча­ет режи­мы рабо­ты от сла­бых к силь­ным, затем выклю­ча­ет духов­ку, а при сле­ду­ю­щем нажа­тии сно­ва вклю­ча­ет самый сла­бый режим. Так мож­но щёл­кать по кру­гу сколь­ко угод­но — в зави­си­мо­сти от коли­че­ства щелч­ков духов­ка будет про­хо­дить все ста­дии работы.

И вот ситу­а­ция: вы дома, вам ско­ро уез­жать, духов­ка рабо­та­ет на пер­вом режи­ме. Вне­зап­но отклю­ча­ет­ся электричество.

Про­бле­ма в том, что когда элек­три­че­ство вклю­чит­ся, духов­ка зара­бо­та­ет на том режи­ме, на кото­ром сто­ит кноп­ка. Вас дома уже не будет.

Сей­час вам нуж­но нажать меха­ни­че­скую кноп­ку столь­ко раз, что­бы при вклю­че­нии све­та духов­ка ока­за­лась в выклю­чен­ном режи­ме. Вы не помни­те, сколь­ко имен­но у духов­ки режи­мов рабо­ты, но их точ­но не боль­ше четы­рёх (вклю­чая выключенный).

Вопрос: сколь­ко раз нуж­но сей­час нажать на кноп­ку, что­бы духов­ка точ­но ока­за­лась в выклю­чен­ном режиме?

#задачи #логика #арифметика