예제 #1
0
 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;
 }
예제 #2
0
 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);
 }
예제 #3
0
 /**
  * @param ObjectMetadata $metadata
  * @return ObjectMetadata
  *
  * @throws \RuntimeException
  */
 public static function setCustomMetadata(ObjectMetadata $metadata)
 {
     $metadata->getProperty('id')->setPrimaryKey(true)->setNullable(true);
 }