PHP-линч #12 • serafim/packed-array • yohang/Finite

Поділитися
Вставка
  • Опубліковано 26 вер 2024

КОМЕНТАРІ • 7

  • @ROX2
    @ROX2 Рік тому +1

    Про композер правда, это хорошо что эту проблему обсудили, но почему нет решения этой проблемы никто так и не задался вопросом. Install производит установку того что было ранее зафиксировано в lock, update - обновляет lock в соответствии с пакетами и их версиями из json, но почему нет команды которая синхронизирует новые появившиеся записи или исчезнувшие\откоректированные с composer.lock для меня - огромная загадка. я поражён что в комьюнити все обсуждают то как надо и не надо использовать install и update и никому в голову не пришло подумать про composer sync например. бред ? из-за этого обновление фреймворка с правками в json превращается в ад в котором проще удалить lock и сделать install, либо банально - update.
    На счёт строгой типизации как мне кажется у них тут есть план - ты правильно упомянул про несколько пакетов которые компилируют исходники в бинарники, вспомним ещё так же про божественный Swoole с асинхронным выполнением и хранилищами. Я проводил некоторые синтетические тесты которые показали что даже в некомпиленном варианте PHP медленнее GO всего лишь в 2 раза, а сам GO например медленнее крестов примерно в 8 раз. Я там тестировал ещё питон, но его даже не имеет смысла упоминать что бы не стыдить змееводов. Суть в том что PHP это самый быстрый интерпретируемый язык, но его предел, конечно же, не достигнут. И судя по последним новостям и тенденциям, там есть куда стремиться, о чем свидетельствует возросший интерес к компиляции его исходников. За последний месяц кстати появилось ещё больше информации, например в том же анотейшене есть инфа про господина который внедрил laravel в электрон, это уже чрезвычайно интересно посмотреть (особенно на реализацию подобной штуки в Tauri). Последние изменения в самом языке связанные со строгой типизацией косвенно о чём то намекают, на вектор в котором может двигаться язык. Там где то на горизонте ещё мелькает свежий RFC: 2D Matrix Operations, чувствуете чем пахнет? Tensorflow c Pytorch немножко напряглись. Гром ещё грянет, главное поменьше проф деформаций, снобизма и душноты и побольше энтузиазма и коммунизма за что мы все и любим PHP.

  • @corpsepk
    @corpsepk Рік тому

    Огонь! Наконец уровень звука в порядке!

  • @kinvain
    @kinvain Рік тому

    Валентин, огромное спасибо за ваш подробный ответ на мой вопрос в прошлом стриме. Собственно после того как я написал сообщения до меня дошло что вы имели в виду именно навязывание интерфейса для DTO.
    Попробовал на рабочем проекте (всё равно рефакторили либу) и получилось прямо именно то что нужно. Проблема была в том что либа требовала реализацию обработчика, но иногда клиент мог передавать обработчик, который либа должна доконфигурировать. Добавлять метод configure в интерфейс было плохо потому что у большинства клиентов данный метод будет пустой. Поробовал сделать ConfigurableHandlerInterface. Но выглядело максимально костыльно. А вот ConfigurableAttribute встал как родной. Просто беру все методы с этим аттрибутом и выполняю их с параметрами из рантайма. Теперь буду объяснять всей команде как с этим работать.
    И отдельное спасибо за пример с контрактом обработчика без интерфейса. Получается что-то golang-подобное - использование требует конкретное определение функции. Не знал что в psalm можно так делать.

    • @kinvain
      @kinvain Рік тому

      После недели работы с атрибутом пришёл к одному неутешительному выводу. Атрибут "скрывает" применение метода. Поясню.
      Если бы я сделал ConfigurableInterface то кликая на методе меня бы сразу перебрасывало в то место библиотеки где данный метод используется. А когда у меня атрибут, то есть соблазн удалить метод как неиспользуемый. Phpstorm не может найти где этот метод применяется. А если кликнуть на атрибут то переносит на сам атрибут, а не на того место где он используется.
      Это, скорее, дело привычки, документации и дисциплины в команде, но это было первое возражение по использованию атрибута.
      Вторым было то что нет контакта на метод конфигурирования. Нужно, опять же, посылать всех читать документацию. И может быть делать дополнительные проверки перед тем как вызвать метод, с таким атрибутом.

  • @sufir
    @sufir Рік тому +1

    41:40 Не знаю почему Мартин не рекомендует (не помню, книгу давно читал), но как минимум что засераются изменения в гите уже достаточная причина не выравнивать. Добавишь один элемент на символ длиннее и все n строк нужно исправлять. Бредовая идея с выравниванием.

    • @ROX2
      @ROX2 Рік тому

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

  • @ИгорьСнежко-я5ю

    Ещё можно методы абстрактного класса помечать как final