Метод getValue класса PropertyAccessor
Метод getValue класса PropertyAccessor возвращает значение
свойства объекта или элемента массива по указанному пути. Первым
параметром передаётся объект или массив, вторым - путь к свойству
в виде строки. Третьим необязательным параметром можно включить
режим игнорирования ошибок при отсутствии свойства.
Синтаксис
public function getValue(object|array $objectOrArray, string $propertyPath, bool $throwExceptionOnInvalidPropertyPath = true): mixed
Пример
Давайте прочитаем значение простого свойства объекта:
<?php
namespace AppUtil;
use SymfonyComponentPropertyAccessPropertyAccess;
class Article
{
public string $title = 'hello';
public int $views = 5;
}
$article = new Article();
$accessor = PropertyAccess::createPropertyAccessor();
$res = $accessor->getValue($article, 'title');
echo $res;
?>
Результат выполнения кода:
"hello"
Пример
Давайте прочитаем значение вложенного свойства по пути через точку:
<?php
namespace AppUtil;
use SymfonyComponentPropertyAccessPropertyAccess;
class Author
{
public string $name = 'abcde';
}
class Article
{
public string $title = 'article';
public Author $author;
public function __construct()
{
$this->author = new Author();
}
}
$article = new Article();
$accessor = PropertyAccess::createPropertyAccessor();
$res = $accessor->getValue($article, 'author.name');
echo $res;
?>
Результат выполнения кода:
"abcde"
Пример
Давайте прочитаем значение элемента массива по индексу:
<?php
namespace AppUtil;
use SymfonyComponentPropertyAccessPropertyAccess;
$article = [
'title' => 'article',
'tags' => ['a', 'b', 'c'],
];
$accessor = PropertyAccess::createPropertyAccessor();
$res = $accessor->getValue($article, '[tags][1]');
echo $res;
?>
Результат выполнения кода:
"b"
Пример
Давайте включим режим игнорирования отсутствующего свойства,
передав третьим параметром false:
<?php
namespace AppUtil;
use SymfonyComponentPropertyAccessPropertyAccess;
$article = ['title' => 'article'];
$accessor = PropertyAccess::createPropertyAccessor();
$res = $accessor->getValue($article, '[views]', false);
var_dump($res);
?>
Результат выполнения кода:
NULL
Смотрите также
-
метод
setValue,
который записывает значение свойства -
метод
isReadable,
который проверяет доступность свойства для чтения -
метод
isWritable,
который проверяет доступность свойства для записи -
класс
PropertyAccessor,
который читает и записывает свойства объектов и массивов