2017 © Pedro Peláez
 

library entity-meta-reader

Wrapper around Doctrine annotations parser.

image

frosty22/entity-meta-reader

Wrapper around Doctrine annotations parser.

  • Tuesday, November 26, 2013
  • by frosty22
  • Repository
  • 1 Watchers
  • 0 Stars
  • 26 Installations
  • PHP
  • 5 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

EntityMetaReader

Verze Alpha, (*1)

Rozšíření podpory entit o vlastní anotace za pomocí Doctrine/Annotations., (*2)

EntityReader

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)

ColumnReader

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)

  • getAnnotation(...) - základní metoda, které vrací danou anotaci či v případě neexistnce může vytvářet anotaci s defaultními hodnotami
  • isValueType() - vrací TRUE pokud je property sloupec reprezentující nějakou hodnotu, tj. má anotaci Column
  • isEntityType() - vrací TRUE pokud je property reference na jinou entitu (= vazba OneToOne, ManyToOne)
  • isCollectionType() - vrací TRUE pokud je property kolekce entit (= vazby ManyToMany, OneToMany)
  • getTargetEntity() - pokud je property vazba na jinou entitu, vrací název této cílové entity

Celý objekt implementuje rozhraní Iterator, tudíž je možné nad ním iterovat, čímž budete procházet jednotlivé anotace property., (*5)

Mapping

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)

Příklad použití

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

}

The Versions

26/11 2013

dev-master

9999999-dev

Wrapper around Doctrine annotations parser.

  Sources   Download

GPL-3.0 BSD-3-Clause GPL-2.0

The Requires