Zapsání pole pomocí anotace
- Zax
- Člen | 370
Ahoj,
šlo by nějak rozumně zapsat pole do anotace? Po vzoru Doctriny bych chtěl sypat data z anotací do „entit“, což jsem naimplementoval snadno, ale teď řeším jak udělat pole, něco ve stylu:
use App\Annotations\Secured;
/**
* @Secured(loggedIn=TRUE, roles=['admin', 'moderator'])
*/
class DefaultPresenter {
}
Ideální by byla i možnost zapsat objekt v JSONu, např.:
/**
* @Secured(loggedIn=TRUE, options={"strict": TRUE, "foo": "bar"})
*/
Bohužel parser zjevně kouskuje anotace podle čárky, takže se vytváří položky s hodnotou „‚moderator‘]“ apod., no nějak mě nenapadá, jak to rozumně pojmout.
Nemá někdo nějaký nápad jak to udělat v Nette? Nechtěl bych jen kvůli parseru tahat celou Doctrinu když Nette obsahuje solidní parser, jen trošičku nedodělaný IMO :-)
Díky.
- enumag
- Člen | 2118
Vykašli se na vymejšlení kola a použij normálně anotace z Doctrine. ;-)
https://github.com/…/Annotations
EDIT: Rozhodně kvůli tomu nemusíš tahat celou doctrinu, anotace jsou samostatný balíček.
Editoval enumag (9. 2. 2015 19:00)
- Zax
- Člen | 370
Já to mám udělaný tak, že ty „entitní“ třídy se tvoří přes generované továrničky, abych si do nich mohl strkat služby a rovnou dělat třeba ověření jestli je uživatel přihlášen apod. Půjde to i s Doctrine anotacemi? Mám tušení, že v Doctrině na to dostaneš jen hloupé přepravky a starej se sám někde v presenteru… :-/
- Zax
- Člen | 370
Rozumím a normálně bych asi i souhlasil, jenže v mé nové práci se nehledí moc na čistotu, potřebujem sypat jeden projekt za druhým a v porovnání s běžnými weby mají naše projekty jepičí život (proto taky hledám víc berliček v podobě anotací – člověk s nimi za krátkou chvíli udělá hodně parády). Psát přepravku i handler se popravdě moc nehodí. No, mrknu na to, zkusím nad tím udělat nějakou obálku a uvidím, jak to půjde. Asi to bude jednodušší než se snažit vymyslet pro pole syntaxi, kterou Nette nerozloží na nesmysly. Tak díky :-)
- Filip Procházka
- Moderator | 4668
Anotace jsou v Doctrine normální třídy, můžeš si s nimi dělat co chceš. Jediné pravidlo je že by neměly mít konstruktor, nebo by aspoň neměl mít žádné argumenty.