@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, не совсем то, вопрос актуален.
  • Вопрос задан
  • 575 просмотров
Пригласить эксперта
Ответы на вопрос 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 посмотрите как выглядит там
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы