AnnotationsParser vs Doctrine2 annotation

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Ďurika
Člen | 328
+
0
-

Zdravim (neviem ci je to bug alebo robim nieco zle ja…)
mam classu:

<?php
/**
 * @ORM\Entity()
 * @ORM\Table(name="user_user")
 */
class User extends \BaseEntity {

	/**
	 * @var string
	 * @ORM\Column(type="string", nullable=true)
	 */
	protected $login;

	/**
	 * @var Collection
	 * @ORM\ManyToMany(targetEntity="Entities\Location\Location", mappedBy="users")
	 */
	protected $locations;

	....
}
?>

ked som robil nieco ako:

<?php
$userEntityReflection = new Reflection\ClassType('Entities\User\User');
$properties = $userEntityReflection->getProperties();
foreach ($properties as $property) {
	$annotations = $property->getAnnotations();
	dump($annotations);
}
?>

tak v dumpe som mal:

<?php
array(2) ▼ {
   var => array(1) ▼ [
      0 => "string" (6)
   ]
   ORM => array(1) ▼ [
      0 => "\Column(type="string", nullable=true)" (37)
   ]
}
array(2) ▼ {
   var => array(1) ▼ [
      0 => "Collection" (10)
   ]
   ORM => array(1) ▼ [
      0 => "\ManyToMany(targetEntity="Entities\Location\Location", mappedBy="users")" (72)
   ]
}
?>

Riesenie
riadok https://api.nette.org/…ser.php.html#31

<?php
const RE_IDENTIFIER = '[_a-zA-Z\x7F-\xFF][_a-zA-Z0-9\x7F-\xFF-]*'; // stary
const RE_IDENTIFIER = '[_a-zA-Z\x7F-\xFF][_a-zA-Z0-9\x7F-\xFF-\\\]*'; // novy
?>

teraz dump vypisuje

<?php
array(2) ▼ {
   var => array(1) ▼ [
      0 => "string" (6)
   ]
   "ORM\Column" => array(1) ▼ [
      0 => ArrayObject(2) ▼ {
         type => "string" (6)
         nullable => TRUE
      }
   ]
}
array(2) ▼ {
   var => array(1) ▼ [
      0 => "Collection" (10)
   ]
   "ORM\ManyToMany" => array(1) ▼ [
      0 => ArrayObject(2) ▼ {
         targetEntity => "Entities\Location\Location" (26)
         mappedBy => "users" (5)
      }
   ]
}
?>
sodae
Nette Evangelist | 250
+
0
-

pošli pull request ;-)

Filip Procházka
Moderator | 4668
+
0
-

Nettí annotace s tím prostě nepočítají. Pull request je dobrý nápad, ale metadata by jsi měl číst tím, čím máš, tedy AnnotationReaderem z Doctrine.

David Ďurika
Člen | 328
+
0
-

ten pull by mohol spravit niekto s vas… ja som to este nerobil, tak aby som tam nieco nepoplietol…

David Ďurika
Člen | 328
+
0
-

aha, ok je to tam, dik za spolupracu! :)