Size: a a a

2019 December 01

А

Аль Пачино in PHP
Artem Molotov
как будто это чем-то поможет :)
Там уже другое дело.
Уже поставил то, что мне нужно.
источник

A

Aleksandr Khristenko in PHP
Sergey
Играюсь с типизированными свойствами PHP 7.4
Есть идеи как сделать ленивую инициализацию типизированного свойства?
https://pastebin.com/b55UvgQj
источник

S

Sergey in PHP
👍 явный null нужен как дефолтное значение, пока даже новый phpstorm не знает об этом

хотя, такое поведение не совсем мне нравится. Дефолтный null в объявлении типа не гарантирует наличия значения при обращении к свойству (как бы очевидно), что в свою очередь требует проверок типа $obj->prop !== null перед обращением, что сильно ослабляет использование типизированных свойств.
Lazy инициализация по-идее не должна подразумевать nullable значение, либо полностью initialized, либо фатал. В общем странная реализация типизированных свойств.
источник

S

Sergey in PHP
Решило бы проблему встроенная поддержка lazy свойств, либо хотя бы операторы/функции для проверки свойства на is_initialized() вместо сравнения с null
источник

A

Aleksandr Khristenko in PHP
Не понимаю, что тебе не нравится. Обычное поведение, так-же как и в других языках с типизацией.
источник

S

Sergey in PHP
Нашел способ без дефолтного значения:
public function __get($name) {
   if ($name === 'bar') {
       return $this->bar = 'hello';
   }
}
источник

A

Aleksandr Khristenko in PHP
Sergey
👍 явный null нужен как дефолтное значение, пока даже новый phpstorm не знает об этом

хотя, такое поведение не совсем мне нравится. Дефолтный null в объявлении типа не гарантирует наличия значения при обращении к свойству (как бы очевидно), что в свою очередь требует проверок типа $obj->prop !== null перед обращением, что сильно ослабляет использование типизированных свойств.
Lazy инициализация по-идее не должна подразумевать nullable значение, либо полностью initialized, либо фатал. В общем странная реализация типизированных свойств.
Ну как бы у тебя так значения и нет, пока ты не поставишь.
источник

S

Sergey in PHP
Это если мы знаем, что его нет. Снаружи класса, значение должно быть всегда, без всяких null
источник

A

Aleksandr Khristenko in PHP
Sergey
Нашел способ без дефолтного значения:
public function __get($name) {
   if ($name === 'bar') {
       return $this->bar = 'hello';
   }
}
Ну да. Стремимся к типизациии и используем метапрограммирование. Клевая попытка сидеть на двух стульях.
источник

A

Aleksandr Khristenko in PHP
Sergey
Это если мы знаем, что его нет. Снаружи класса, значение должно быть всегда, без всяких null
Если ты не заметил, то это свойство private, снаруши торчит геттер который всегда возвращает значение.
источник

S

Sergey in PHP
+1, вот это и смущает в такой реализации типизированных свойств
источник

A

Aleksandr Khristenko in PHP
Sergey
+1, вот это и смущает в такой реализации типизированных свойств
Что вот это?
источник

S

Sergey in PHP
Комментарий к “Ну да. Стремимся к типизациии и используем метапрограммирование. Клевая попытка сидеть на двух стульях.”
источник

SP

Sergey Protko in PHP
Sergey
Играюсь с типизированными свойствами PHP 7.4
Есть идеи как сделать ленивую инициализацию типизированного свойства?
https://pastebin.com/b55UvgQj
посмотри proxy manager окромиуса, готовое решение для ленивой инициализации там есть в примерах
источник

A

Aleksandr Khristenko in PHP
Sergey
Нашел способ без дефолтного значения:
public function __get($name) {
   if ($name === 'bar') {
       return $this->bar = 'hello';
   }
}
Ну и да. Тебя не смущает, что оно тут постоянно будет перевычислять значение. Это не ленивая инициализация.
источник

S

Sergey in PHP
А ты проверь 😉
вызовется ли __get второй раз
источник

S

Sergey in PHP
Sergey Protko
посмотри proxy manager окромиуса, готовое решение для ленивой инициализации там есть в примерах
уже для php 7.4? ща гляну
источник

MM

Maksim Masiukevich in PHP
Sergey
Играюсь с типизированными свойствами PHP 7.4
Есть идеи как сделать ленивую инициализацию типизированного свойства?
https://pastebin.com/b55UvgQj
Isset)
источник

S

Sergey in PHP
пф, 😂 точняк, то что нужно)
источник

MM

Maksim Masiukevich in PHP
Дык) вчера пол ночи проект фиксил)
источник