AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"

The property ... is not readable because it is typed «string». Но почему?

Воспользовался новой фичей php7.4 - строгой типизацией переменных, но выдает ошибку
The property "App\Entity\Conference::$slug" is not readable because it is typed "string". You should either initialize it or make it nullable using "?string" instead.

При этом
private ?string $slug;
// ...
public function getSlug(): ?string
    {
        return $this->slug;
    }

    public function setSlug(string $slug): self
    {
        $this->slug = $slug;

        return $this;
    }
  • Вопрос задан
  • 1020 просмотров
Решения вопроса 1
AleksandrB
@AleksandrB Автор вопроса
Совсем недавно вывел "Hello world"
Нашел. Для тех, кто столкнулся
private ?string $slug = null;

Причина заключается в том что разработчики языка считают плохой практикой присваивать по дефолту значение null к пустому свойству, которое они не будут поддерживать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
If a typed property does not have a default value, no implicit null default value is implied (even if the property is nullable). Instead, the property is considered to be uninitialized. Reads from uninitialized properties will generate a TypeError
https://wiki.php.net/rfc/typed_properties_v2#unini...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
28 апр. 2024, в 08:27
7000 руб./за проект
28 апр. 2024, в 08:18
15000 руб./за проект
28 апр. 2024, в 02:30
3000 руб./за проект