Метод setValue класса PropertyAccessor
Метод setValue класса PropertyAccessor
записывает значение в свойство объекта или в элемент
массива. Первым параметром передаётся объект или массив,
вторым - путь к свойству, третьим - новое значение.
Путь может быть вложенным, например 'user.name',
а также поддерживать индексы массивов, например
'items[0].title'. Если свойство не существует и
объект не допускает динамических свойств, будет выброшено
исключение NoSuchPropertyException.
Синтаксис
$propertyAccessor->setValue(object|array $object, string $path, mixed $value): void
Пример
Давайте запишем значение в свойство title объекта:
<?php
namespace AppService;
use SymfonyComponentPropertyAccessPropertyAccess;
class Article
{
public string $title = '';
}
$article = new Article();
$propertyAccessor = PropertyAccess::createPropertyAccessor();
$propertyAccessor->setValue($article, 'title', 'abcde');
echo $article->title;
?>
Результат выполнения кода:
"abcde"
Пример
Давайте запишем значение во вложенное свойство name
объекта user:
<?php
namespace AppService;
use SymfonyComponentPropertyAccessPropertyAccess;
class User
{
public string $name = '';
}
class Article
{
public ?User $user = null;
public function __construct()
{
$this->user = new User();
}
}
$article = new Article();
$propertyAccessor = PropertyAccess::createPropertyAccessor();
$propertyAccessor->setValue($article, 'user.name', 'hello');
echo $article->user->name;
?>
Результат выполнения кода:
"hello"
Пример
Давайте запишем значение в элемент массива по индексу:
<?php
namespace AppService;
use SymfonyComponentPropertyAccessPropertyAccess;
$article = [
'title' => 'abcde',
'tags' => ['a', 'b', 'c', 'd', 'e'],
];
$propertyAccessor = PropertyAccess::createPropertyAccessor();
$propertyAccessor->setValue($article, '[title]', 'article');
$propertyAccessor->setValue($article, '[tags][0]', 'user');
print_r($article);
?>
Результат выполнения кода:
[
'title' => 'article',
'tags' => ['user', 'b', 'c', 'd', 'e'],
]
Смотрите также
-
класс
PropertyAccessor,
который предоставляет доступ к свойствам объектов и массивов -
метод
getValue,
который читает значение свойства по пути -
метод
isWritable,
который проверяет, можно ли записать значение в свойство -
метод
isReadable,
который проверяет, можно ли прочитать значение свойства