New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Podpora anotací přes více řádků #29

Closed
Tharos opened this Issue Mar 16, 2014 · 9 comments

Comments

Projects
None yet
5 participants
@Tharos
Owner

Tharos commented Mar 16, 2014

Líbilo by se mi, kdyby se definice libovolné property mohla rozprostírat přes více řádků.

Řekněme, že by výhledově existoval nějaký generátor databázového schéma také nějaká univerzální form factory. Řekněme, že oba tyto nástroje mají 90 % z toho, co potřebují ke své práci znát, už nyní v anotacích u entit. Ale třeba 10 % informací ke svému běhu jim chybí (schema tool by třeba mohl chtít vědět, jak ukládat boolean, factory na formulář by mohla chtít vědět, jakou pokročilou validaci u dané položky použít atp.).

Asi nejčistější by v takovém případě bylo mít těch 10 % doplňujících informací uložených někde samostatně (v nějaký konfiguračních souborech), ale pragmatické je mít i tyto informace v anotacích u Entity.

Anotace jsou teď velmi stručné a to mi maximálně vyhovuje. Pokud by měly narůst, líbilo by se mi, kdyby mohly být přes více řádků:

<?php

/**
 * @property Book[] $books
 *     m:hasOne
 *     m:filter(order#published)
 *
 * @property int $age
 *     m:form(unsigned, range: 1-99)
 *
 * @property string|null $website
 */
class Author extends Entity
{
}

Co si o tom myslíte?

@Tharos Tharos added the RFC label Mar 16, 2014

@mibk

This comment has been minimized.

Show comment
Hide comment
@mibk

mibk Mar 16, 2014

Contributor

Já souhlasím, nevidím v tom žádný zádrhel. Tebe nějaký zádrhel napadá? Implementačně by to asi nemělo být složité.

Contributor

mibk commented Mar 16, 2014

Já souhlasím, nevidím v tom žádný zádrhel. Tebe nějaký zádrhel napadá? Implementačně by to asi nemělo být složité.

@Tharos

This comment has been minimized.

Show comment
Hide comment
@Tharos

Tharos Mar 16, 2014

Owner

Implementačně by to měla být maličkost (drobná úprava toho parseru anotací).

Píšu o tom jednak proto, aby bylo zřejmé, co se chystá, a také pro nepravděpodobný případ, že by k tomu někoho napadlo něco zásadního (třeba proč je to blbost nebo proč to udělat jinak). :)

Owner

Tharos commented Mar 16, 2014

Implementačně by to měla být maličkost (drobná úprava toho parseru anotací).

Píšu o tom jednak proto, aby bylo zřejmé, co se chystá, a také pro nepravděpodobný případ, že by k tomu někoho napadlo něco zásadního (třeba proč je to blbost nebo proč to udělat jinak). :)

@jasir

This comment has been minimized.

Show comment
Hide comment
@jasir

jasir Mar 16, 2014

Zdravím pánové! V první řadě velké díky za LeanMapper, to jsem opravdu dlouho hledal.
Zrovna jsem uvažoval, že vytvořím issue na takovou drobnost k anotacím, ale vidím, že se zrovna chystá jedna z věcí, co jsem měl na mysli. Takže 👍 Druhá byla možnost se v anotaci dostat ke komentáři, tj. to, co následuje za anotacemi, prostě popis. Šlo by přidat něco jako $property->getDescriptions()? Díky!

jasir commented Mar 16, 2014

Zdravím pánové! V první řadě velké díky za LeanMapper, to jsem opravdu dlouho hledal.
Zrovna jsem uvažoval, že vytvořím issue na takovou drobnost k anotacím, ale vidím, že se zrovna chystá jedna z věcí, co jsem měl na mysli. Takže 👍 Druhá byla možnost se v anotaci dostat ke komentáři, tj. to, co následuje za anotacemi, prostě popis. Šlo by přidat něco jako $property->getDescriptions()? Díky!

@mibk

This comment has been minimized.

Show comment
Hide comment
@mibk

mibk Mar 17, 2014

Contributor

👍 za $property->getDescription() nebo $property->getDocComment() nebo nějaký jiný ještě trefnější název.

Contributor

mibk commented Mar 17, 2014

👍 za $property->getDescription() nebo $property->getDocComment() nebo nějaký jiný ještě trefnější název.

@Tharos

This comment has been minimized.

Show comment
Hide comment
@Tharos

Tharos Mar 18, 2014

Owner

Ohledně komentáře můžeme pokračovat zde. :)

Owner

Tharos commented Mar 18, 2014

Ohledně komentáře můžeme pokračovat zde. :)

@Tharos Tharos added Approwed feature and removed RFC labels Mar 18, 2014

janpecha added a commit to inlm/LeanMapper that referenced this issue Mar 12, 2017

janpecha added a commit to inlm/LeanMapper that referenced this issue Mar 12, 2017

@castamir

This comment has been minimized.

Show comment
Hide comment
@castamir

castamir Mar 13, 2017

Collaborator

V tomto případě jsem spíš pro anotaci nad konkrétními property, podobně jako v drtivé většině frameworků, se kterými jsem se setkal (a to i mimo PHP).

class MyEntity {
    /**
    * @property-read
    * m:my-flag
    */
    public $foo;
}
Collaborator

castamir commented Mar 13, 2017

V tomto případě jsem spíš pro anotaci nad konkrétními property, podobně jako v drtivé většině frameworků, se kterými jsem se setkal (a to i mimo PHP).

class MyEntity {
    /**
    * @property-read
    * m:my-flag
    */
    public $foo;
}
@janpecha

This comment has been minimized.

Show comment
Hide comment
@janpecha

janpecha Mar 13, 2017

Collaborator

Ať nediskutujeme na 2 místech zároveň.


castamir: Za mě spíš ne, bude to asi dělat neplechu v komentářích... by default bude veškerý komentář anotací poslední property...

Otázkou je jestli by to skutečně vadilo. Z toho navazujícího komentáře bychom vytáhli jen m: příznaky, zbytku komentáře bychom si nevšímali.

Navíc komentáře se obvykle zapisují na začátek phpdocu před veškeré @anotace, připadá mi dost nepravděpodobné, že by někdo zapsal komentář na konec a ještě v něm uvedl nějaké m: příznaky.


Anotace nad property - nad tím jsem taky přemýšlel, docela by se mi to líbilo, akorát ta property by musela být private/protected, aby nad ní mohl LM spouštět __set/__get metody.

Collaborator

janpecha commented Mar 13, 2017

Ať nediskutujeme na 2 místech zároveň.


castamir: Za mě spíš ne, bude to asi dělat neplechu v komentářích... by default bude veškerý komentář anotací poslední property...

Otázkou je jestli by to skutečně vadilo. Z toho navazujícího komentáře bychom vytáhli jen m: příznaky, zbytku komentáře bychom si nevšímali.

Navíc komentáře se obvykle zapisují na začátek phpdocu před veškeré @anotace, připadá mi dost nepravděpodobné, že by někdo zapsal komentář na konec a ještě v něm uvedl nějaké m: příznaky.


Anotace nad property - nad tím jsem taky přemýšlel, docela by se mi to líbilo, akorát ta property by musela být private/protected, aby nad ní mohl LM spouštět __set/__get metody.

@janpecha janpecha added this to the Version 3.3.0 milestone Apr 15, 2018

janpecha added a commit to inlm/LeanMapper that referenced this issue May 25, 2018

@janpecha janpecha self-assigned this May 25, 2018

@janpecha

This comment has been minimized.

Show comment
Hide comment
@janpecha

janpecha May 25, 2018

Collaborator

Upravil jsem původní PR #108 pro víceřádkové anotace do striktnější formy:

  • další řádky anotace musí být odsazeny alespoň 2 bílými znaky
  • zároveň se parser anotace zastaví na prvním prázdném řádku

Jak vypadá parsování v praxi lze vidět v tomto testu.

Collaborator

janpecha commented May 25, 2018

Upravil jsem původní PR #108 pro víceřádkové anotace do striktnější formy:

  • další řádky anotace musí být odsazeny alespoň 2 bílými znaky
  • zároveň se parser anotace zastaví na prvním prázdném řádku

Jak vypadá parsování v praxi lze vidět v tomto testu.

janpecha added a commit to inlm/LeanMapper that referenced this issue Jun 13, 2018

@janpecha

This comment has been minimized.

Show comment
Hide comment
@janpecha

janpecha Jun 13, 2018

Collaborator

Merged #108

Collaborator

janpecha commented Jun 13, 2018

Merged #108

@janpecha janpecha closed this Jun 13, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment