И так, продолжаю историю со скобками вокруг 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, ); } Сделать данные скобки не обязательными.
Прокси отличается от Призрака тем, что Прокси в момент резолвинга возвращает НОВЫЙ объект или уже существующий. А Призрак инициализирует уже существующий объект. В таком случае: 1. Призрак spl_object_id() - вернёт один и тот же id для объекта-призрака и разрешённого объекта, потому что это на самом деле и есть один объект 2. Прокси вернёт разные ID, потому что это разные объекты
Было бы круто и красиво если бы упростили синктаксис. Например для класса свойства задавали в таком формате: publicR int $variable = 1; publicW string $variable = 'Hello';
Так и не появилось нормального архитектора в пхп и хуки явное тому подтверждение. Теперь портянки кода из сеттер-методов переедут в хуки 👍 Сначала топят за иммутабельность, потом нате вам сеттеры На недавном стриме ругали Тейлора за слом совместимости в минорных версиях лары, а здесь прям в самом языке наломали
Изначально говорилось что в хуках хорошим тоном будет держать миниатюрную логику 1 строчную. Если логика большая - лучше оставить обычные метода get и set
@@wladoxa Договорённости почти никогда не работают. Если можно в тело написать больше 1 строки - это будет сделано. Туда и запросы к бд воткнут, если надо будет. Теперь при присвоении свойства сиди гадай - оно публичное или на нём сет-хук висит. И сет-метод тебя теперь не спасёт, потому что никто не мешает в родительском классе повесить хук
Тогда можно было бы создавать класс MyDTOClass с одними свойствами, без конструктора, но если бы мы инициализировали класс вот такой конструкцией, где в качестве аргументов передавали ассоциативный массив, ключи которые совпадали бы с именами свойств класса, то все значения из массива автоматически заносились в соответствующие свойства класса
@@ElisDN Просто когда нужно кучу DTO-шек сделать, то в них тогда нужно писать в таком случае конструктор, который будет по свойствам раскидывать, как минимум... а так прописал свойства, все наглядно, все красиво и чисто... с моей конструкцией просто передаешь массив и они как сахар разливаются по свойствам объекта...
@@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) идеально сработает.
а правда, что yii3 выйдет, когда выйдет half life 3 ?
да , half life 3 будет на yii3 как раз
@@sashas.3323 отлично обмажемся слоями абстракций и уйдём в отрыв
Молодцы, что вот так собираетесь и обсуждаете новости! Было очень интересно провести эти пару часов с вами.
Класс, что собрали столько спецов PHP👍👍👍. Интересуюсь им последние несколько месяцев. А тут такое)
Александр Макаров как всегда 🎉огонь!
Это точно!
И так, продолжаю историю со скобками вокруг 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,
);
}
Сделать данные скобки не обязательными.
Так отправь rfc на форуме
PHP One Love!
Поддерживаю
«Релиз случается неожиданно, каждый год в ноябре» 😂
неожиданно, прям как снег для коммунальщиков 😀
@ хотел это написать, но почувствовал себя старым, не понравилось, отказался от этой мысли 😊
Анднрюха привет!
@ 👋🏼
Прокси отличается от Призрака тем, что Прокси в момент резолвинга возвращает НОВЫЙ объект или уже существующий.
А Призрак инициализирует уже существующий объект.
В таком случае:
1. Призрак spl_object_id() - вернёт один и тот же id для объекта-призрака и разрешённого объекта, потому что это на самом деле и есть один объект
2. Прокси вернёт разные ID, потому что это разные объекты
Когда же появится тип для свойства класса - callable
Ребят, почему многие считают что дженерики в ПХП не нужны?
Потому что бараны сидят у руля, которые не хотят делать что-то нормальное.
Когда все отвернутся от пыхи, тогда и сделают, но уже поздно будет
Пардон, из фильма Однажды в Голливуде.
Если бы запилили модификаторы доступа по умолчанию, которые не позволяли бы торчать наружу методам помеченные этим модификатором, было классно!
Что тут можно было на два часа растянуть?
Было бы круто и красиво если бы упростили синктаксис. Например для класса свойства задавали в таком формате: publicR int $variable = 1; publicW string $variable = 'Hello';
publicR - можно читать свойство класса, но нельзя изменять при обращении извне. Изменять можно только внутри класса.
pгblicW - можно устанавливать из вне значение этого свойства, но нельзя прочитать. Только чтение внутри класса
чувак буквально с ником FartTime что в переводе "время пердеть", сидит в шапке с волком
Он вообще странный чувак
Потомочный класс. Есть. Ну. Баранки гну блэт!
Так и не появилось нормального архитектора в пхп и хуки явное тому подтверждение. Теперь портянки кода из сеттер-методов переедут в хуки 👍
Сначала топят за иммутабельность, потом нате вам сеттеры
На недавном стриме ругали Тейлора за слом совместимости в минорных версиях лары, а здесь прям в самом языке наломали
Изначально говорилось что в хуках хорошим тоном будет держать миниатюрную логику 1 строчную.
Если логика большая - лучше оставить обычные метода get и set
@@wladoxa Договорённости почти никогда не работают. Если можно в тело написать больше 1 строки - это будет сделано. Туда и запросы к бд воткнут, если надо будет.
Теперь при присвоении свойства сиди гадай - оно публичное или на нём сет-хук висит. И сет-метод тебя теперь не спасёт, потому что никто не мешает
в родительском классе повесить хук
Когда уберут $ - это самое бе
@@ruslanm.1120 это визитная карточка php
Ни о чем. Спецы.
детский сад что ли собрался? вроде серьезные люди, но один явно неадекват
Ну еще было бы прикольная такая конструкция: new MyDTOClass(= $assocArray)
Тогда можно было бы создавать класс MyDTOClass с одними свойствами, без конструктора, но если бы мы инициализировали класс вот такой конструкцией, где в качестве аргументов передавали ассоциативный массив, ключи которые совпадали бы с именами свойств класса, то все значения из массива автоматически заносились в соответствующие свойства класса
Уже работает new MyDTOClass(...$assocArray)
@@ElisDN я писал про другое... идея в другом, что не нужно создавать конструктор тогда, если реализовать, то о чем я пишу
@@ElisDN Просто когда нужно кучу DTO-шек сделать, то в них тогда нужно писать в таком случае конструктор, который будет по свойствам раскидывать, как минимум... а так прописал свойства, все наглядно, все красиво и чисто... с моей конструкцией просто передаешь массив и они как сахар разливаются по свойствам объекта...
@@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) идеально сработает.