@lexstile

Как в php обратиться к несуществующему свойству объекта?

Пример:
# Если question не существует в $data, мы получим сообщение:
# Notice: Undefined property: stdClass::$question in ...
$this->validation->validateQuestion($data->question)


Это можно решить проверкой на isset, но есть ли в php способ избежать этой проверки?
Например, как в js (optional chaining):
console.log(data.user?.address?.street); // undefined


UPD: нашел, что есть в 8 версии php.
Но, тем не менее, выдает warning:
Warning: Undefined property: stdClass::$question in...


Пробую так:
$this->validation->validateQuestion($data?->question) // знак вопроса добавил


UPD: похоже, что это проверка на NULL, не совсем то, вопрос актуален.
  • Вопрос задан
  • 505 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Sergo94Min
Разработчик
Посмотрите на пример класса в исходнике Laravel optiona

Пример хелпер функции optional
if (! function_exists('optional')) {
    /**
     * Provide access to optional objects.
     *
     * @param  mixed  $value
     * @param  callable|null  $callback
     * @return mixed
     */
    function optional($value = null, callable $callback = null)
    {
        if (is_null($callback)) {
            return new Optional($value);
        } elseif (! is_null($value)) {
            return $callback($value);
        }
    }
}


Ну и сам класс Optional посмотрите как выглядит там
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽