dev-master
9999999-devWrapper around Doctrine annotations parser.
GPL-3.0 BSD-3-Clause GPL-2.0
The Requires
- nette/nette 2.*
- doctrine/orm 2.*
- php >= 5.3.0
by Vít Ledvinka
Wrapper around Doctrine annotations parser.
Verze Alpha, (*1)
Rozšíření podpory entit o vlastní anotace za pomocí Doctrine/Annotations., (*2)
Základním objektem je EntityReader, který přijímá instanci Doctrine\Common\Annotations\Reader. Tento objekt posléze vrací pole objektů ColumnReader pro každou property dané entity., (*3)
Objekt reprezentující property entity. Tento objekt Vám umožňuje získávat objekty reprezentující konkrétní anotace a dále je možné pomocí něj získávát základní informace o dané property., (*4)
Celý objekt implementuje rozhraní Iterator, tudíž je možné nad ním iterovat, čímž budete procházet jednotlivé anotace property., (*5)
Knihovna obsahuje několik základních objektů reprezentující anotace:, (*6)
Access - objekt zastupující anotaci definující přístup k dané property - zápis/čtení dané property, může být využito například pro generované datagridy, formuláře., (*7)
Name - triviální human-read název property, například pro nadpisy sloupců datagridu, label pro formulář atd., (*8)
use EntityMetaReader\Mapping as EMR; use Doctrine\ORM\Mapping as ORM; class Product extends \Ale\Entities\IdentifiedEntity { /** * @EMR\Name("Název produktu") * @ORM\Column(type="string") * @var string */ protected $name; /** * @EMR\Name("Provize") * @EMR\Access(read="admin", write=false) * @ORM\Column(type="integer") * @var int */ protected $commission; /** * @EMR\Access(read=false) * @ORM\Column(type="integer") * @var int */ protected $someInternal; } $user = new Nette\Security\User(...); $reader = new EntityReader(...); $columns = $reader->getEntityColumns("Product"); foreach ($columns as $columnReader) { $access = $columnReader->getAnnotation('EntityMetaReader\Mapping\Access', TRUE); /** @var EntityMetaReader\Mapping\Access $access */ echo $access->checkReadAccess($user); // Může uživatel číst property echo $access->checkWriteAccess($user); // Může uživatel zapisovat property $name = $column->getAnnotation('EntityMetaReader\Mapping\Name', TRUE, $columnReader->getName()); /** @var EntityMetaReader\Mapping\Name */ echo $name; // Vypiš human-read název property, pokud není vytvoří objekt Name s defaultní hodnotou názvu property }
Wrapper around Doctrine annotations parser.
GPL-3.0 BSD-3-Clause GPL-2.0