本文整理汇总了PHP中Symfony\Component\PropertyAccess\PropertyAccessorInterface类的典型用法代码示例。如果您正苦于以下问题:PHP PropertyAccessorInterface类的具体用法?PHP PropertyAccessorInterface怎么用?PHP PropertyAccessorInterface使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PropertyAccessorInterface类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1:
function it_creates_theme_from_valid_array($themeClassName, PropertyAccessorInterface $propertyAccessor)
{
$data = ['name' => 'Foo bar', 'logical_name' => 'foo/bar'];
$propertyAccessor->setValue(Argument::any(), 'name', 'Foo bar')->shouldBeCalled();
$propertyAccessor->setValue(Argument::any(), 'logical_name', 'foo/bar')->shouldBeCalled();
$propertyAccessor->setValue(Argument::any(), 'parentsNames', [])->shouldBeCalled();
$this->createFromArray($data)->shouldHaveType($themeClassName);
}
示例2: getPropertyValue
/**
* @param \Symfony\Component\PropertyAccess\PropertyAccessorInterface $accessor
* @param \FSi\Bundle\AdminBundle\Display\Property $property
* @return mixed
*/
private function getPropertyValue(PropertyAccessorInterface $accessor, Property $property)
{
$value = $accessor->getValue($this->object, $property->getPath());
foreach ($property->getValueFormatters() as $formatter) {
$value = $formatter->format($value);
}
return $value;
}
示例3: mapFormsToData
/**
* {@inheritdoc}
*/
public function mapFormsToData($forms, &$data)
{
if (null === $data) {
return;
}
if (!is_array($data) && !is_object($data)) {
throw new UnexpectedTypeException($data, 'object, array or empty');
}
foreach ($forms as $form) {
$propertyPath = $form->getPropertyPath();
$config = $form->getConfig();
// Write-back is disabled if the form is not synchronized (transformation failed),
// if the form was not submitted and if the form is disabled (modification not allowed)
if (null !== $propertyPath && $config->getMapped() && $form->isSubmitted() && $form->isSynchronized() && !$form->isDisabled()) {
// If the field is of type DateTime and the data is the same skip the update to
// keep the original object hash
if ($form->getData() instanceof \DateTime && $form->getData() == $this->propertyAccessor->getValue($data, $propertyPath)) {
continue;
}
// If the data is identical to the value in $data, we are
// dealing with a reference
if (!is_object($data) || !$config->getByReference() || $form->getData() !== $this->propertyAccessor->getValue($data, $propertyPath)) {
$this->propertyAccessor->setValue($data, $propertyPath, $form->getData());
}
}
}
}
示例4: testRenderWithoutScalar
/**
* @expectedException \Lug\Component\Grid\Exception\InvalidTypeException
* @expectedExceptionMessage The "name" number column type expects a numeric value, got "stdClass".
*/
public function testRenderWithoutScalar()
{
$this->propertyAccessor->expects($this->once())->method('getValue')->with($this->identicalTo($data = new \stdClass()), $this->identicalTo($path = 'path_value'))->will($this->returnValue(new \stdClass()));
$column = $this->createColumnMock();
$column->expects($this->once())->method('getName')->will($this->returnValue('name'));
$this->type->render($data, ['column' => $column, 'path' => $path]);
}
示例5: getIriFromItem
/**
* {@inheritdoc}
*/
public function getIriFromItem($item, $referenceType = RouterInterface::ABSOLUTE_PATH)
{
if ($resource = $this->resourceCollection->getResourceForEntity($item)) {
return $this->router->generate($this->getRouteName($resource, 'item'), ['id' => $this->propertyAccessor->getValue($item, 'id')], $referenceType);
}
throw new \InvalidArgumentException(sprintf('No resource associated with the type "%s".', get_class($item)));
}
示例6: apply
/**
* {@inheritdoc}
*/
public function apply(Request $request, ParamConverter $configuration) : bool
{
$class = $configuration->getClass();
$constant = sprintf('%s::EMPTY_PROPERTIES', $class);
$propertiesToBeSkipped = [];
$instance = new $class();
$declaredProperties = array_filter((new \ReflectionClass($class))->getProperties(), function (ReflectionProperty $property) use($class) {
return $property->getDeclaringClass()->name === $class;
});
// fetch result properties that are optional and to be skipped as those must not be processed
if (defined($constant)) {
$propertiesToBeSkipped = constant($constant);
}
/** @var ReflectionProperty $property */
foreach ($declaredProperties as $property) {
$propertyName = $property->getName();
if (in_array($propertyName, $propertiesToBeSkipped, true)) {
continue;
}
// non-writable properties cause issues with the DTO creation
if (!$this->propertyAccess->isWritable($instance, $propertyName)) {
throw new \RuntimeException($this->getInvalidPropertyExceptionMessage($class, $propertyName));
}
$this->propertyAccess->setValue($instance, $propertyName, $this->findAttributeInRequest($request, $property, $this->propertyAccess->getValue($instance, $propertyName)));
}
$request->attributes->set($configuration->getName(), $instance);
return true;
}
示例7: normalize
/**
* {@inheritdoc}
*/
public function normalize($violationList, $format = null, array $context = [])
{
if ($violationList instanceof \Exception) {
if ($this->debug) {
$trace = $violationList->getTrace();
}
}
$data = ['@context' => '/api/contexts/ConstraintViolationList', '@type' => 'ConstraintViolationList', 'title' => 'An error occurred', 'violations' => []];
foreach ($violationList as $violation) {
$key = $violation->getPropertyPath();
$invalidValue = $violation->getInvalidValue();
if (method_exists($violation->getRoot(), '__toString')) {
$invalidValue = $this->propertyAccessor->getValue($violation->getRoot(), $violation->getPropertyPath());
}
if ($violation->getConstraint() instanceof UniqueEntity) {
$class = method_exists($violation->getRoot(), 'getConfig') ? $violation->getRoot()->getConfig() : $violation->getRoot();
$reflexion = new \ReflectionClass($class);
$key = strtolower($reflexion->getShortname());
}
$data['violations'][$key][] = ['property' => $violation->getPropertyPath(), 'invalidValue' => $invalidValue, 'message' => $violation->getMessage()];
}
if (isset($trace)) {
$data['trace'] = $trace;
}
return $data;
}
示例8: transform
/**
* Transforms an object into an elastica object having the required keys
*
* @param object $object the object to convert
* @param array $fields the keys we want to have in the returned array
*
* @return Document
**/
public function transform($object, array $fields)
{
$identifier = $this->propertyAccessor->getValue($object, $this->options['identifier']);
$document = new Document($identifier);
foreach ($fields as $key => $mapping) {
if ($key == '_parent') {
$property = null !== $mapping['property'] ? $mapping['property'] : $mapping['type'];
$value = $this->propertyAccessor->getValue($object, $property);
$document->setParent($this->propertyAccessor->getValue($value, $mapping['identifier']));
continue;
}
$value = $this->propertyAccessor->getValue($object, $key);
if (isset($mapping['type']) && in_array($mapping['type'], array('nested', 'object')) && isset($mapping['properties']) && !empty($mapping['properties'])) {
/* $value is a nested document or object. Transform $value into
* an array of documents, respective the mapped properties.
*/
$document->set($key, $this->transformNested($value, $mapping['properties']));
continue;
}
if (isset($mapping['type']) && $mapping['type'] == 'attachment') {
// $value is an attachment. Add it to the document.
if ($value instanceof \SplFileInfo) {
$document->addFile($key, $value->getPathName());
} else {
$document->addFileContent($key, $value);
}
continue;
}
$document->set($key, $this->normalizeValue($value));
}
return $document;
}
示例9: mapFormsToData
/**
* {@inheritdoc}
*/
public function mapFormsToData(array $forms, &$data)
{
if (null === $data) {
return;
}
if (!is_array($data) && !is_object($data)) {
throw new UnexpectedTypeException($data, 'object, array or empty');
}
$iterator = new VirtualFormAwareIterator($forms);
$iterator = new \RecursiveIteratorIterator($iterator);
foreach ($iterator as $form) {
/* @var \Symfony\Component\Form\FormInterface $form */
$propertyPath = $form->getPropertyPath();
$config = $form->getConfig();
// Write-back is disabled if the form is not synchronized (transformation failed)
// and if the form is disabled (modification not allowed)
if (null !== $propertyPath && $config->getMapped() && $form->isSynchronized() && !$form->isDisabled()) {
// If the data is identical to the value in $data, we are
// dealing with a reference
if (!is_object($data) || !$config->getByReference() || $form->getData() !== $this->propertyAccessor->getValue($data, $propertyPath)) {
$this->propertyAccessor->setValue($data, $propertyPath, $form->getData());
}
}
}
}
示例10: get
/**
* @param string $name
* @param string|null $path
*
* @return mixed
*/
public function get($name, $path = null)
{
$path = $path ?: (isset($this->mapping[$name]) ? $this->mapping[$name] : $name);
if (is_array($this->data)) {
$path = '[' . str_replace('.', '][', $path) . ']';
}
return $this->accessor->getValue($this->data, $path);
}
示例11: setState
/**
* {@inheritdoc}
*/
public function setState(&$object, $value)
{
try {
$this->propertyAccessor->setValue($object, $this->propertyPath, $value);
} catch (SymfonyNoSuchPropertyException $e) {
throw new NoSuchPropertyException(sprintf('Property path "%s" on object "%s" does not exist.', $this->propertyPath, get_class($object)), $e->getCode(), $e);
}
}
示例12: readFrom
public function readFrom($data)
{
$values = array();
foreach ($this->paths as $path) {
$values[] = $this->accessor->getValue($data, $path);
}
return $values;
}
示例13: setAttributeValue
/**
* {@inheritdoc}
*/
protected function setAttributeValue($object, $attribute, $value, $format = null, array $context = array())
{
try {
$this->propertyAccessor->setValue($object, $attribute, $value);
} catch (NoSuchPropertyException $exception) {
// Properties not found are ignored
}
}
示例14: create
/**
* {@inheritdoc}
*/
public function create($entityClass, array $defaultValues = array(), array $options = array())
{
$object = new $entityClass();
foreach ($defaultValues as $propertyPath => $value) {
$this->propertyAccessor->setValue($object, $propertyPath, $value);
}
return $object;
}
示例15: resolveRouteParameters
/**
* @param mixed[] $parameters
* @param mixed[] $data
*
* @return mixed[]
*/
private function resolveRouteParameters(array $parameters, $data)
{
$routeParameters = [];
foreach ($parameters as $parameter) {
$routeParameters[$parameter] = $this->propertyAccessor->getValue($data, $parameter);
}
return $routeParameters;
}