Пых – Telegram
Пых
8.28K subscribers
260 photos
14 videos
6 files
566 links
Блог Валентина Удальцова о разработке на PHP.

Хобот @phpyhobot
https://youtube.com/@phpyh
https://vkvideo.ru/@phpyh
https://news.1rj.ru/str/isPHPdying

Статистика: https://news.1rj.ru/str/INOTAROBOT?start=st1219340804

Для связи используйте личные сообщения канала.
Download Telegram
🤯78🔥15👍8👎4🌚2
🌿 Про атрибут Override в PHP 8.3

В PHP предлагается добавить специальный атрибут #[Override], с помощью которого можно будет явно помечать методы, которые переопределяют методы из родительского класса. Например:

class Parent {
protected function run(): void {}
}

class Child extends Parent {
#[\Override]
public function run(): void {}
}

Если в классе Parent убрать метод run(), то будет брошено исключение.

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

Всё идёт к тому, что RFC будет принят (на текущий момент 20 голосов за и 0 против) и мы увидим #[Override] в PHP 8.3.

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

При изучении и разработке кода #[Override] позволит сразу понимать, что этот метод переопределяет родительский, и сократит время на выявление ошибок.

Возможно, стоит в будущем (PHP 9 или 10 😎) вообще сделать добавление атрибута #[Override] для переопределяющих методов обязательным. Отсутствие атрибута в этом случае будет гарантировать, что метод ничего не переопределяет.

Но у этой идеи есть и противники. Интересные обсуждения развернулись на reddit и externals.io 👀
🔥43👍236👎5😁1😢1👀1
👍6
Какие ключи у значений 'c' и 'e'?
Anonymous Quiz
23%
-9 и 11
37%
1 и 2
6%
2 и 3
15%
1 и 11
12%
2 и 4
7%
-11 и 11
🗿70👍35😱19💩17🤔7🔥3😁3🤡1
Ну что ж, давно не виделись?!

Линч в 19:00! Расскажу, как у меня дела, какие планы на ближайшее время, и конечно же посмотрим проекты, которые вы скинете. До встречи!

https://youtu.be/lmTsDyF4e6A
🔥388👍6🤮1
Пых
Ну что ж, давно не виделись?! Линч в 19:00! Расскажу, как у меня дела, какие планы на ближайшее время, и конечно же посмотрим проекты, которые вы скинете. До встречи! https://youtu.be/lmTsDyF4e6A
0:00 Упс, я забыл, как запускать стрим...
0:43 php-farttime
2:40 Я теперь работаю на себя
6:08 Анонс курса по PHP
26:40 Статус моих OpenSource-проектов
30:22 Линч zlodes/php-prometheus-client
55:20 Почему в Symfony рецепты лежат не вместе с бандлами
57:30 Ответы автора zlodes/php-prometheus-client на мои замечания
58:08 Зачем чувствовать себя тупым
1:01:54 Создаём окно при помощи SerafimArts/ffi-sdl
1:17:25 PhpStorm или Vim? Аналогия с барабанами О_о
1:20:36 Constructor Property Promotion
1:21:16 Почему я не использую Copilot
1:24:34 И снова про белую тему
1:27:36 Я долго дебажу автокомплит SDL и вывожу-таки на экран картинку!
2:04:05 Почти делаю Кириллу Pull Request
2:08:22 Финал
👍34🔥114💩2🤔1
Код-румы для онлайн-собеседований

В этом месяце провожу для Evrone технические собеседования на позицию Middle/Senior PHP разработчика и активно использую Yandex Code для практических заданий.

Раньше я всё делал сложнее для собеседуемого: давал ссылку на Gist с заданием и просил пошарить экран с IDE. Сейчас просто создаю комнату с условием задачи, отправляю ссылку кандидату, и через пять секунд мы уже обсуждаем и правим один и тот же сниппет. Это как Google Docs или как если бы Code With Me от JetBrains был доступен прямо в браузере.

https://code.yandex-team.ru/

Об инструменте узнал от @adrenaL1nkin на собеседовании в Webinar. 😊
👍40🔥13👎9💩8
Пых
🔴 PHP-линч #20 Через час линч! https://youtu.be/j7w5nmk2AFE
▶️ Начали!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3
🤡30👍8👎2👏2🌭2
🤡47🤯16👍141
🤵 💍 👰

Сегодня у нас с Ольгой год семейной жизни! А ещё, так совпало, свадьба моего брата! По этому поводу мы записали кавер на любимую песню. Приглашаю вас послушать!

https://youtu.be/nIA4GDz9APE
120🔥83👍39🍾12💩5
👍11🔥2
💩39👍15🔥9😁8🤯1
Пых
▶️ PHP-линч #21 К сожалению, в 19 не получается, поэтому проведу на час раньше из кафе. Надеюсь, будет нормально слышно. https://youtu.be/DxmX2A_WJTk
Вчера на линче коснулись нюансов работы автовайринга в Symfony. В какой-то момент я сказал, что даже если в DI найдётся ровно один сервис, реализующий некий интерфейс, то Symfony не заавтовайрит этот сервис без алиаса. Но в чате меня поправили, и я пообещал проверить.

Я был не прав. Действительно, если в контейнере имеется только один сервис, имплементирующий интерфейс, то он без дополнительных телодвижений будет использован для инъекции по этому интерфейсу. И только если таких сервисов 0 или несколько, будет выброшено исключение вида Cannot autowire service "Client": argument "$dependency" of method "__construct()" references interface "Contract" but no such service exists. You should maybe alias this interface to one of these existing services: "Implementation", "AnotherImplementation".

Но в любом случае я рекомендую либо явно прописывать алиасы для автоваринга, либо хитрить и сразу регистрировать сервис под именем интерфейса, например:

$services
->defaults()
->autowire()
->autoconfigure()
->set(Client::class)
->set(Contract::class, Implementation::class)
->args(...);
👍40🥴15🤔10🔥2🤨21
В PHP 8.4/9 будет новый JIT!

На днях Дмитрий Стогов опубликовал сообщение в externals, в котором представил новый Just-in-Time компилятор (php/src#12079), основанный на собственном фреймворке Дмитрия Intermediate Representation.

Основной плюс нового подхода в том, что исходный код PHP освободится от низкоуровневых деталей JIT-компиляции. Теперь интерпретатор будет формировать так называемое промежуточное представление, которое вышеупомянутый фреймворк превратит в ассемблерный код с учётом процессорной специфики. Также новый JIT позволит в будущем применить дополнительные оптимизации (видимо, уже на стороне фреймворка) для получения более эффективного машинного кода. Минус же состоит в более долгой JIT-компиляции.

Изначально Дмитрий собирался оставлять обе версии JIT, но, судя по обсуждению в PR, многие не против просто поменять старую на новую и не париться с поддержкой двух компиляторов. Пока не очень понятно, когда именно всё это выйдет, но я охотно верю, что уже в PHP 8.4 (ноябрь 2024).

Большое спасибо Владимиру Плахотникову за идею для поста!

P.S. Я заболел, поэтому отложил все свои анонсы. Сейчас иду на поправку. Если всё будет хорошо, то в среду мы зарелизим на стриме Typhoon 0.2.0 (бывший PHP Extended Type System) с новой крутой статической рефлексией, а в четверг я опубликую заявку для записи на курс.
🔥82👍14💊51👀1🤝1
🧑‍🏫 Хардкорный курс по PHP, 2-ой поток (2 группы)

Ну что ж, момент настал! Подготовил базовое описание. Там ещё явно не всё есть. Пишите в комментариях, какие вопросы вас интересуют в первую очередь. Ниже продублирую только информацию о том, как попасть на курс.

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

Далее необходимо пройти опрос а-ля "срез знаний" (вспоминаем школу 😅️️), ссылку на него я размещу здесь, на канале Пых, 23 сентября (завтра) в 12:00 по Москве. По результатам среза я сформирую 2 группы по 10 студентов со схожим профилем знаний. При прочих равных приоритет будет отдаваться тем, кто раньше пройдёт опрос.

Желаю удачи!
🔥48👍178😁1