Builder
9 months ago
Driver
9 months ago
Exception
9 months ago
Reflection
9 months ago
Annotation.php
9 months ago
AnsiQuoteStrategy.php
9 months ago
AssociationOverride.php
9 months ago
AssociationOverrides.php
9 months ago
AttributeOverride.php
9 months ago
AttributeOverrides.php
9 months ago
Cache.php
9 months ago
ChainTypedFieldMapper.php
9 months ago
ChangeTrackingPolicy.php
9 months ago
ClassMetadata.php
9 months ago
ClassMetadataFactory.php
9 months ago
ClassMetadataInfo.php
9 months ago
Column.php
9 months ago
ColumnResult.php
9 months ago
CustomIdGenerator.php
9 months ago
DefaultEntityListenerResolver.php
9 months ago
DefaultNamingStrategy.php
9 months ago
DefaultQuoteStrategy.php
9 months ago
DefaultTypedFieldMapper.php
9 months ago
DiscriminatorColumn.php
9 months ago
DiscriminatorMap.php
9 months ago
Embeddable.php
9 months ago
Embedded.php
9 months ago
Entity.php
9 months ago
EntityListenerResolver.php
9 months ago
EntityListeners.php
9 months ago
EntityResult.php
9 months ago
FieldResult.php
9 months ago
GeneratedValue.php
9 months ago
HasLifecycleCallbacks.php
9 months ago
Id.php
9 months ago
Index.php
9 months ago
InheritanceType.php
9 months ago
InverseJoinColumn.php
9 months ago
JoinColumn.php
9 months ago
JoinColumnProperties.php
9 months ago
JoinColumns.php
9 months ago
JoinTable.php
9 months ago
ManyToMany.php
9 months ago
ManyToOne.php
9 months ago
MappedSuperclass.php
9 months ago
MappingAttribute.php
9 months ago
MappingException.php
9 months ago
NamedNativeQueries.php
9 months ago
NamedNativeQuery.php
9 months ago
NamedQueries.php
9 months ago
NamedQuery.php
9 months ago
NamingStrategy.php
9 months ago
OneToMany.php
9 months ago
OneToOne.php
9 months ago
OrderBy.php
9 months ago
PostLoad.php
9 months ago
PostPersist.php
9 months ago
PostRemove.php
9 months ago
PostUpdate.php
9 months ago
PreFlush.php
9 months ago
PrePersist.php
9 months ago
PreRemove.php
9 months ago
PreUpdate.php
9 months ago
QuoteStrategy.php
9 months ago
ReflectionEmbeddedProperty.php
9 months ago
ReflectionEnumProperty.php
9 months ago
ReflectionReadonlyProperty.php
9 months ago
SequenceGenerator.php
9 months ago
SqlResultSetMapping.php
9 months ago
SqlResultSetMappings.php
9 months ago
Table.php
9 months ago
TypedFieldMapper.php
9 months ago
UnderscoreNamingStrategy.php
9 months ago
UniqueConstraint.php
9 months ago
Version.php
9 months ago
ReflectionReadonlyProperty.php
38 lines
| 1 | <?php |
| 2 | declare (strict_types=1); |
| 3 | namespace MailPoetVendor\Doctrine\ORM\Mapping; |
| 4 | if (!defined('ABSPATH')) exit; |
| 5 | use InvalidArgumentException; |
| 6 | use LogicException; |
| 7 | use ReflectionProperty; |
| 8 | use function assert; |
| 9 | use function func_get_args; |
| 10 | use function func_num_args; |
| 11 | use function is_object; |
| 12 | use function sprintf; |
| 13 | final class ReflectionReadonlyProperty extends ReflectionProperty |
| 14 | { |
| 15 | public function __construct(ReflectionProperty $wrappedProperty) |
| 16 | { |
| 17 | if (!$wrappedProperty->isReadOnly()) { |
| 18 | throw new InvalidArgumentException('Given property is not readonly.'); |
| 19 | } |
| 20 | parent::__construct($wrappedProperty->class, $wrappedProperty->name); |
| 21 | } |
| 22 | public function getValue(?object $object = null) : mixed |
| 23 | { |
| 24 | return $this->wrappedProperty->getValue(...func_get_args()); |
| 25 | } |
| 26 | public function setValue(mixed $objectOrValue, mixed $value = null) : void |
| 27 | { |
| 28 | if (func_num_args() < 2 || $objectOrValue === null || !$this->isInitialized($objectOrValue)) { |
| 29 | $this->wrappedProperty->setValue(...func_get_args()); |
| 30 | return; |
| 31 | } |
| 32 | assert(is_object($objectOrValue)); |
| 33 | if (parent::getValue($objectOrValue) !== $value) { |
| 34 | throw new LogicException(sprintf('Attempting to change readonly property %s::$%s.', $this->class, $this->name)); |
| 35 | } |
| 36 | } |
| 37 | } |
| 38 |