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

Класс PropertyAccessor

Класс PropertyAccessor позволяет получать и изменять значения вложенных свойств объектов и элементов массивов, используя специальный синтаксис путей. Первым параметром в методы передаётся объект или массив, вторым - путь к свойству в виде строки. Это избавляет от необходимости писать длинные цепочки проверок на существование свойств.

Синтаксис

<?php use Symfony\Component\PropertyAccess\PropertyAccess; $accessor = PropertyAccess::createPropertyAccessor(); $accessor->getValue($object, 'property.path'); $accessor->setValue($object, 'property.path', 'value'); $accessor->isReadable($object, 'property.path'); $accessor->isWritable($object, 'property.path'); ?>

Пример

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

<?php namespace App\Service; use Symfony\Component\PropertyAccess\PropertyAccess; class ArticleService { public function getArticleTitle(): string { $article = new \stdClass(); $article->title = 'abcde'; $accessor = PropertyAccess::createPropertyAccessor(); return $accessor->getValue($article, 'title'); } } ?>

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

"abcde"

Пример

Давайте изменим значение вложенного свойства объекта:

<?php namespace App\Service; use Symfony\Component\PropertyAccess\PropertyAccess; class ArticleService { public function updateArticle(): string { $author = new \stdClass(); $author->name = 'user'; $article = new \stdClass(); $article->title = 'abcde'; $article->author = $author; $accessor = PropertyAccess::createPropertyAccessor(); $accessor->setValue($article, 'author.name', 'hello'); return $article->author->name; } } ?>

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

"hello"

Пример

Давайте проверим, доступно ли свойство для чтения:

<?php namespace App\Service; use Symfony\Component\PropertyAccess\PropertyAccess; class ArticleService { public function checkReadable(): bool { $article = new \stdClass(); $article->title = 'abcde'; $accessor = PropertyAccess::createPropertyAccessor(); return $accessor->isReadable($article, 'title'); } } ?>

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

true

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

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