PHP 8.4: Обзор ключевых нововведений с экспертами | Большой стрим на CutCode!

Поделиться
HTML-код
  • Опубликовано: 2 фев 2025

Комментарии • 47

  • @handleftman
    @handleftman 2 месяца назад +34

    а правда, что yii3 выйдет, когда выйдет half life 3 ?

    • @sashas.3323
      @sashas.3323 2 месяца назад +4

      да , half life 3 будет на yii3 как раз

    • @handleftman
      @handleftman 2 месяца назад

      @@sashas.3323 отлично обмажемся слоями абстракций и уйдём в отрыв

  • @kamil19862307
    @kamil19862307 2 месяца назад +2

    Молодцы, что вот так собираетесь и обсуждаете новости! Было очень интересно провести эти пару часов с вами.

  • @СергейАлай
    @СергейАлай 2 месяца назад +2

    Класс, что собрали столько спецов PHP👍👍👍. Интересуюсь им последние несколько месяцев. А тут такое)

  • @ИльфатЗиганшин-л8ъ
    @ИльфатЗиганшин-л8ъ 2 месяца назад +4

    Александр Макаров как всегда 🎉огонь!

    • @CutCodeRu
      @CutCodeRu  2 месяца назад

      Это точно!

  • @mexvision-3556
    @mexvision-3556 Месяц назад +2

    И так, продолжаю историю со скобками вокруг new. Обязательно к прочтению Валентину. В аргументах конструктора класса мы уже можем писать модификаторы доступа, тем самым сокращаем код. Выглядит это вот так:
    class Application
    {
    public function __construct(
    readonly protected ContainerInterface $container,
    readonly protected RequestHandlerInterface $requestHandler,
    ) {
    // constructor logic...
    };
    }
    Но, давайте посмотрим на код который мы пишем. В большинстве случаев конструктор вообще не содержит тело, мы оставляем просто пустые фигурные скобки, которые висят и мозолят глаз. Мое предложение такое:
    class Application
    {
    public function __construct(
    readonly protected ContainerInterface $container,
    readonly protected RequestHandlerInterface $requestHandler,
    );
    }
    Сделать данные скобки не обязательными.

    • @Seraf_
      @Seraf_ 5 дней назад

      Так отправь rfc на форуме

  • @adammartin7477
    @adammartin7477 2 месяца назад +3

    PHP One Love!

    • @CutCodeRu
      @CutCodeRu  2 месяца назад

      Поддерживаю

  • @gloomyrobust
    @gloomyrobust 2 месяца назад +7

    «Релиз случается неожиданно, каждый год в ноябре» 😂

    • @nnsvision
      @nnsvision 2 месяца назад +1

      неожиданно, прям как снег для коммунальщиков 😀

    • @gloomyrobust
      @gloomyrobust 2 месяца назад

      @ хотел это написать, но почувствовал себя старым, не понравилось, отказался от этой мысли 😊

    • @Набиуллина-Эльвира
      @Набиуллина-Эльвира 2 месяца назад

      Анднрюха привет!

    • @gloomyrobust
      @gloomyrobust 2 месяца назад

      @ 👋🏼

  • @EdmondDantesIf
    @EdmondDantesIf 2 месяца назад +5

    Прокси отличается от Призрака тем, что Прокси в момент резолвинга возвращает НОВЫЙ объект или уже существующий.
    А Призрак инициализирует уже существующий объект.
    В таком случае:
    1. Призрак spl_object_id() - вернёт один и тот же id для объекта-призрака и разрешённого объекта, потому что это на самом деле и есть один объект
    2. Прокси вернёт разные ID, потому что это разные объекты

  • @TcheburTcheburashka
    @TcheburTcheburashka 2 месяца назад

    Когда же появится тип для свойства класса - callable

  • @yashkevich8164
    @yashkevich8164 2 месяца назад

    Ребят, почему многие считают что дженерики в ПХП не нужны?

    • @Seraf_
      @Seraf_ Месяц назад

      Потому что бараны сидят у руля, которые не хотят делать что-то нормальное.

    • @Seraf_
      @Seraf_ Месяц назад

      Когда все отвернутся от пыхи, тогда и сделают, но уже поздно будет

  • @ElisDN
    @ElisDN 2 месяца назад

    Пардон, из фильма Однажды в Голливуде.

  • @ГригорийАнин-х1р
    @ГригорийАнин-х1р 2 месяца назад

    Если бы запилили модификаторы доступа по умолчанию, которые не позволяли бы торчать наружу методам помеченные этим модификатором, было классно!

  • @mgsfdgsfdgsgssdgrsdgdrgsr16
    @mgsfdgsfdgsgssdgrsdgdrgsr16 2 месяца назад +3

    Что тут можно было на два часа растянуть?

  • @TcheburTcheburashka
    @TcheburTcheburashka 2 месяца назад

    Было бы круто и красиво если бы упростили синктаксис. Например для класса свойства задавали в таком формате: publicR int $variable = 1; publicW string $variable = 'Hello';

    • @TcheburTcheburashka
      @TcheburTcheburashka 2 месяца назад

      publicR - можно читать свойство класса, но нельзя изменять при обращении извне. Изменять можно только внутри класса.

    • @TcheburTcheburashka
      @TcheburTcheburashka 2 месяца назад

      pгblicW - можно устанавливать из вне значение этого свойства, но нельзя прочитать. Только чтение внутри класса

  • @idk-je8yx
    @idk-je8yx 2 месяца назад

    чувак буквально с ником FartTime что в переводе "время пердеть", сидит в шапке с волком

    • @Wivern11
      @Wivern11 Месяц назад

      Он вообще странный чувак

  • @mgsfdgsfdgsgssdgrsdgdrgsr16
    @mgsfdgsfdgsgssdgrsdgdrgsr16 2 месяца назад

    Потомочный класс. Есть. Ну. Баранки гну блэт!

  • @__-if5ww
    @__-if5ww 2 месяца назад

    Так и не появилось нормального архитектора в пхп и хуки явное тому подтверждение. Теперь портянки кода из сеттер-методов переедут в хуки 👍
    Сначала топят за иммутабельность, потом нате вам сеттеры
    На недавном стриме ругали Тейлора за слом совместимости в минорных версиях лары, а здесь прям в самом языке наломали

    • @wladoxa
      @wladoxa 2 месяца назад

      Изначально говорилось что в хуках хорошим тоном будет держать миниатюрную логику 1 строчную.
      Если логика большая - лучше оставить обычные метода get и set

    • @__-if5ww
      @__-if5ww 2 месяца назад

      ​@@wladoxa Договорённости почти никогда не работают. Если можно в тело написать больше 1 строки - это будет сделано. Туда и запросы к бд воткнут, если надо будет.
      Теперь при присвоении свойства сиди гадай - оно публичное или на нём сет-хук висит. И сет-метод тебя теперь не спасёт, потому что никто не мешает
      в родительском классе повесить хук

  • @ruslanm.1120
    @ruslanm.1120 2 месяца назад +1

    Когда уберут $ - это самое бе

    • @CutCodeRu
      @CutCodeRu  2 месяца назад

      @@ruslanm.1120 это визитная карточка php

  • @wpdew
    @wpdew 2 месяца назад +1

    Ни о чем. Спецы.

  • @lexxkrt
    @lexxkrt 2 месяца назад

    детский сад что ли собрался? вроде серьезные люди, но один явно неадекват

  • @TcheburTcheburashka
    @TcheburTcheburashka 2 месяца назад

    Ну еще было бы прикольная такая конструкция: new MyDTOClass(= $assocArray)

    • @TcheburTcheburashka
      @TcheburTcheburashka 2 месяца назад

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

    • @ElisDN
      @ElisDN 2 месяца назад

      Уже работает new MyDTOClass(...$assocArray)

    • @TcheburTcheburashka
      @TcheburTcheburashka 2 месяца назад

      @@ElisDN я писал про другое... идея в другом, что не нужно создавать конструктор тогда, если реализовать, то о чем я пишу

    • @TcheburTcheburashka
      @TcheburTcheburashka 2 месяца назад

      @@ElisDN Просто когда нужно кучу DTO-шек сделать, то в них тогда нужно писать в таком случае конструктор, который будет по свойствам раскидывать, как минимум... а так прописал свойства, все наглядно, все красиво и чисто... с моей конструкцией просто передаешь массив и они как сахар разливаются по свойствам объекта...

    • @ElisDN
      @ElisDN 2 месяца назад

      ​@@TcheburTcheburashka > Тогда можно было бы создавать класс DTO с одними свойствами, без конструктора... Просто нужно писать в таком случае конструктор, который будет по свойствам раскидывать, как минимум...
      Для DTO раскидывать теперь не нужно. Вместо класса со свойствами без конструктора:
      final class Dto {
      public string $a = '';
      public string $b = '';
      public string $c = '';
      }
      сейчас удобнее создавать класс со свойствами в конструкторе:
      final readonly class Dto {
      public function __construct(
      public string $a,
      public string $b,
      public string $c
      } {}
      }
      И с этим создание через new Dto(...$array) идеально сработает.