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
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)
}
]
}
?>
- Filip Procházka
- Moderator | 4668
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
ten pull by mohol spravit niekto s vas… ja som to este nerobil, tak aby som tam nieco nepoplietol…