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
Wallogit.com
2017 © Pedro Peláez
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