Что выведет код?
Anonymous Quiz
21%
Uncaught Error: Class not found
14%
A\B\C
5%
B\C
14%
namespace\B\C
47%
Parse error: syntax error, unexpected token "namespace"
🤯78🔥15👍8👎4🌚2
Forwarded from Сергей Предводителев
🌿 Про атрибут Override в PHP 8.3
В PHP предлагается добавить специальный атрибут
Появление этого атрибута не ломает обратную совместимость, так как его использование опционально и, если его убрать, то метод будет также как и сейчас переопределяться.
Всё идёт к тому, что RFC будет принят (на текущий момент 20 голосов за и 0 против) и мы увидим
Несмотря на то, что применение атрибута для переопределяющих методов опционально, мне кажется, что использовать его нужно всегда и, скорей всего, IDE и статические анализаторы будут предлагать это сделать.
При изучении и разработке кода
Возможно, стоит в будущем (PHP 9 или 10 😎) вообще сделать добавление атрибута
Но у этой идеи есть и противники. Интересные обсуждения развернулись на reddit и externals.io 👀
В 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👍23❤6👎5😁1😢1👀1
Какие ключи у значений '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
Ну что ж, давно не виделись?!
Линч в
https://youtu.be/lmTsDyF4e6A
Линч в
19:00! Расскажу, как у меня дела, какие планы на ближайшее время, и конечно же посмотрим проекты, которые вы скинете. До встречи!https://youtu.be/lmTsDyF4e6A
YouTube
PHP-линч #19 • Анонс моего курса • zlodes/php-prometheus-client • SerafimArts/ffi-sdl
0:00 Упс, я забыл, как запускать стрим...
0:43 @php-farttime
2:40 Я теперь работаю на себя
6:04 Анонс курса по PHP
26:40 Статус моих OpenSource-проектов
30:22 Линч zlodes/php-prometheus-client
55:20 Почему в Symfony рецепты лежат не вместе с бандлами
57:30…
0:43 @php-farttime
2:40 Я теперь работаю на себя
6:04 Анонс курса по PHP
26:40 Статус моих OpenSource-проектов
30:22 Линч zlodes/php-prometheus-client
55:20 Почему в Symfony рецепты лежат не вместе с бандлами
57:30…
🔥38❤8👍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 Финал
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🔥11❤4💩2🤔1
Код-румы для онлайн-собеседований
В этом месяце провожу для Evrone технические собеседования на позицию Middle/Senior PHP разработчика и активно использую Yandex Code для практических заданий.
Раньше я всё делал сложнее для собеседуемого: давал ссылку на Gist с заданием и просил пошарить экран с IDE. Сейчас просто создаю комнату с условием задачи, отправляю ссылку кандидату, и через пять секунд мы уже обсуждаем и правим один и тот же сниппет. Это как Google Docs или как если бы Code With Me от JetBrains был доступен прямо в браузере.
https://code.yandex-team.ru/
Об инструменте узнал от @adrenaL1nkin на собеседовании в Webinar. 😊
В этом месяце провожу для 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
Что выведет код?
Anonymous Quiz
39%
Uncaught Error: Call to protected method B::hello() from scope C
61%
Hello!
🤡47🤯16👍14❤1
🤵 💍 👰
Сегодня у нас с Ольгой год семейной жизни! А ещё, так совпало, свадьба моего брата! По этому поводу мы записали кавер на любимую песню. Приглашаю вас послушать!
https://youtu.be/nIA4GDz9APE
Сегодня у нас с Ольгой год семейной жизни! А ещё, так совпало, свадьба моего брата! По этому поводу мы записали кавер на любимую песню. Приглашаю вас послушать!
https://youtu.be/nIA4GDz9APE
YouTube
Imagine — John Lennon Cover By Olga & Valentin
❤120🔥83👍39🍾12💩5
Что выведет код?
Anonymous Quiz
42%
Fatal error: Uncaught Error: Call to protected method B::hello() from scope C
58%
Hello!
💩39👍15🔥9😁8🤯1
К сожалению, в 19 не получается, поэтому проведу на час раньше из кафе. Надеюсь, будет нормально слышно.
https://youtu.be/DxmX2A_WJTk
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #21
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, гитхаб/symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть…
👍7🔥7❤2
Пых
Вчера на линче коснулись нюансов работы автовайринга в Symfony. В какой-то момент я сказал, что даже если в DI найдётся ровно один сервис, реализующий некий интерфейс, то Symfony не заавтовайрит этот сервис без алиаса. Но в чате меня поправили, и я пообещал проверить.
Я был не прав. Действительно, если в контейнере имеется только один сервис, имплементирующий интерфейс, то он без дополнительных телодвижений будет использован для инъекции по этому интерфейсу. И только если таких сервисов 0 или несколько, будет выброшено исключение вида
Но в любом случае я рекомендую либо явно прописывать алиасы для автоваринга, либо хитрить и сразу регистрировать сервис под именем интерфейса, например:
Я был не прав. Действительно, если в контейнере имеется только один сервис, имплементирующий интерфейс, то он без дополнительных телодвижений будет использован для инъекции по этому интерфейсу. И только если таких сервисов 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🤨2❤1
В 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) с новой крутой статической рефлексией, а в четверг я опубликую заявку для записи на курс.
На днях Дмитрий Стогов опубликовал сообщение в 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💊5❤1👀1🤝1
Пых
PHP Extended Type System 0.1.0 🚀 https://github.com/php-extended-type-system/type/releases/tag/0.1.0 https://github.com/php-extended-type-system/type-stringifier/releases/tag/0.1.0 https://github.com/php-extended-type-system/type-reflection/releases/tag/0.1.0…
Typhoon 0.2.0
Итак, завтра (21 сентября) в
Ещё раз расскажу, зачем это всё, как в общих чертах работает и какие инструменты ждать в ближайшее время.
https://youtu.be/lp5zj0DdQ28
Итак, завтра (21 сентября) в
19:00 собираемся на канале PHP Point для совместного релиза PHP Extended Type System 0.2.0 под новым названием Typhoon!Ещё раз расскажу, зачем это всё, как в общих чертах работает и какие инструменты ждать в ближайшее время.
https://youtu.be/lp5zj0DdQ28
YouTube
Typhoon 0.2.0 • Новое название • Новый конструктор типов • Новая статическая рефлексия
Подписывайтесь на наши каналы в Telegram:
• Пых https://news.1rj.ru/str/phpyh,
• PHP Digest https://news.1rj.ru/str/phpdigest,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
• Пых https://news.1rj.ru/str/phpyh,
• PHP Digest https://news.1rj.ru/str/phpdigest,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
🔥39👍13❤4🤔3
Пых
Typhoon 0.2.0 Итак, завтра (21 сентября) в 19:00 собираемся на канале PHP Point для совместного релиза PHP Extended Type System 0.2.0 под новым названием Typhoon! Ещё раз расскажу, зачем это всё, как в общих чертах работает и какие инструменты ждать в ближайшее…
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Typhoon 0.2.0 • Новое название • Новый конструктор типов • Новая статическая рефлексия
Подписывайтесь на наши каналы в Telegram:
• Пых https://news.1rj.ru/str/phpyh,
• PHP Digest https://news.1rj.ru/str/phpdigest,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
• Пых https://news.1rj.ru/str/phpyh,
• PHP Digest https://news.1rj.ru/str/phpdigest,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying.
Поддержите канал на Boosty: https://boosty.to/phpyh.
🧑🏫 Хардкорный курс по PHP, 2-ой поток (2 группы)
Ну что ж, момент настал! Подготовил базовое описание. Там ещё явно не всё есть. Пишите в комментариях, какие вопросы вас интересуют в первую очередь. Ниже продублирую только информацию о том, как попасть на курс.
Основные требования: наличие компьютера с интернетом и свободное владение русским языком. Никаких ограничений по возрасту, полу и стране происхождения/нахождения нет.
Далее необходимо пройти опрос а-ля "срез знаний" (вспоминаем школу 😅️️), ссылку на него я размещу здесь, на канале Пых, 23 сентября (завтра) в 12:00 по Москве. По результатам среза я сформирую 2 группы по 10 студентов со схожим профилем знаний. При прочих равных приоритет будет отдаваться тем, кто раньше пройдёт опрос.
Желаю удачи!
Ну что ж, момент настал! Подготовил базовое описание. Там ещё явно не всё есть. Пишите в комментариях, какие вопросы вас интересуют в первую очередь. Ниже продублирую только информацию о том, как попасть на курс.
Основные требования: наличие компьютера с интернетом и свободное владение русским языком. Никаких ограничений по возрасту, полу и стране происхождения/нахождения нет.
Далее необходимо пройти опрос а-ля "срез знаний" (вспоминаем школу 😅️️), ссылку на него я размещу здесь, на канале Пых, 23 сентября (завтра) в 12:00 по Москве. По результатам среза я сформирую 2 группы по 10 студентов со схожим профилем знаний. При прочих равных приоритет будет отдаваться тем, кто раньше пройдёт опрос.
Желаю удачи!
vudaltsov on Notion
Хардкорный курс PHP | Notion
Привет!
🔥48👍17❤8😁1