private function analyzeProperty(string $propertyName, ReflectionMethod $method, ObjectMetadata $objectMetadata) : PropertyMetadata { $propertyInfo = new PropertyMetadata(); $setter = $this->getSetterName($propertyName); $this->setReturnTypeInfo($propertyInfo, $method); $propertyInfo->setName($propertyName); $propertyInfo->setReadOnly(!$objectMetadata->hasMethod($setter)); $propertyInfo->setGetter($method->getName()); $propertyInfo->setSetter($setter); return $propertyInfo; }
public function test() { $object = new UserDefault(); $type = UserDefault::class; $metadata = new ObjectMetadata($object); PHPUnit::assertEquals($type, $metadata->getType()); PHPUnit::assertNotEquals(10, $object->getId()); $metadata->setValue($object, 'id', 10); PHPUnit::assertEquals(10, $object->getId()); PHPUnit::assertEquals(new \ReflectionClass($object), $metadata->getReflectionClass()); try { $metadata->getProperty('thisPropertyDoesNotExists', true); PHPUnit::fail('Must raise an exception'); } catch (\RuntimeException $ex) { } $property = $metadata->getProperty('thisPropertyDoesNotExists'); PHPUnit::assertNull($property); $properties = $metadata->getProperties(); $type = $metadata->getType(); $object = unserialize(serialize($metadata)); PHPUnit::assertEquals($properties, $object->getProperties()); PHPUnit::assertEquals($type, $object->getType()); PHPUnit::assertEquals($metadata, $object); }
/** * @param ObjectMetadata $metadata * @return ObjectMetadata * * @throws \RuntimeException */ public static function setCustomMetadata(ObjectMetadata $metadata) { $metadata->getProperty('id')->setPrimaryKey(true)->setNullable(true); }