РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1019 of 1361 menu

Метод isReadable класса PropertyAccessor

Метод isReadable класса PropertyAccessor проверяет, доступно ли для чтения значение по указанному пути. Первым параметром передаётся объект или массив, вторым - путь к свойству в виде строки. Метод возвращает true, если значение можно прочитать, и false в противном случае. Это полезно для безопасного чтения свойств через getValue без риска получить исключение.

Синтаксис

public function isReadable(object|array $objectOrArray, string $propertyPath): bool

Пример

Давайте создадим объект и проверим читаемость его свойства:

<?php namespace AppService; use SymfonyComponentPropertyAccessPropertyAccess; class PropertyChecker { public function check(): void { $article = new class { public string $title = 'abcde'; private string $secret = 'hello'; }; $accessor = PropertyAccess::createPropertyAccessor(); var_dump($accessor->isReadable($article, 'title')); var_dump($accessor->isReadable($article, 'secret')); var_dump($accessor->isReadable($article, 'unknown')); } } ?>

Результат выполнения кода:

true false false

Пример

Давайте проверим читаемость вложенного свойства и элемента массива:

<?php namespace AppService; use SymfonyComponentPropertyAccessPropertyAccess; class PropertyChecker { public function check(): void { $data = [ 'user' => [ 'name' => 'abcde', 'age' => 30, ], ]; $accessor = PropertyAccess::createPropertyAccessor(); var_dump($accessor->isReadable($data, '[user][name]')); var_dump($accessor->isReadable($data, '[user][email]')); } } ?>

Результат выполнения кода:

true false

Пример

Давайте используем isReadable перед вызовом getValue для безопасного чтения:

<?php namespace AppService; use SymfonyComponentPropertyAccessPropertyAccess; class PropertyChecker { public function check(): void { $article = new class { public string $title = 'article'; }; $accessor = PropertyAccess::createPropertyAccessor(); $path = 'title'; if ($accessor->isReadable($article, $path)) { echo $accessor->getValue($article, $path); } else { echo 'not readable'; } } } ?>

Результат выполнения кода:

"article"

Смотрите также

  • класс PropertyAccessor,
    который предоставляет доступ к свойствам объектов и массивов
  • метод getValue,
    который читает значение свойства по пути
  • метод setValue,
    который записывает значение свойства по пути
  • метод isWritable,
    который проверяет возможность записи свойства
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить