Komentáře k článku

Generovanie kódu s Yii framework

Yii, free open-source framework, je dostupný verejnosti približne od roku 2008. Jeho autor sa podieľal na vývoji frameworku Prado. Yii prichádza so silou, šikovnosťou a množstvom funkcií, ktoré urýchľujú vývoj webových projektov. Jednou z tých najšikovnejších, najviac uľahčujúcich prácu, je generovanie kódu — o ňom si dnes povieme.

Zpět na článek

22 komentářů k článku Generovanie kódu s Yii framework:

  1. LV

    Budoucnost Yii?

    Yii ma bezesporu zajimavou koncepci a radu moc peknych vlastnosti. Ma ale vyznam jim v soucasnosti zabyvat, kdyz z komunity kolem prosakuji informace, ze bude na prelomu 2011/2012 kompletne prepsan bez zachovani zpetne kompatibility? Je vubec vhodne jej v takovem pripade nasazovat do produkcniho prostredi?

    1. ujovlado

      Re: Budoucnost Yii?

      Určite má význam sa nim zaoberať. Pretože nebudeš predsa čakať, kým vydajú nové Yii … projekty treba robiť stále.

      Žiadne hlasy z komunity nepresakujú – je to uvedené oficiálne na stránke.

      Jednoducho keď vydajú nové Yii, budeš nové projekty robiť na novom.

      Momentálne je zaručená podpora do konca 2012 a dovolím si tvrdiť, že bude ešte predĺžená, takže nie je sa čoho báť a určite by ma to neodrádzalo od nasadenia do produkčnej verzie.

  2. gawan

    čo urobí generátor ak prídam stĺpec do DB?

    Zdravím,
    ďakujem za článok. Mám otázku. Čo sa stane ak urobím toto:
    1. vygenerujem model z tabuľky
    2. potom model ručne upravím
    3. potom dostanem požiadavku pridať nejaké nové stĺpce do tabuľky
    4. potom znovu vygenerujem model

    čo sa stane? prepíše mi moje úpravy, alebo je tak inteligentný, že dokáže pridať nové vlastnosti do vygenerovaného súboru?

    1. ujovlado

      Re: čo urobí generátor ak prídam stĺpec do DB?

      Takúto situáciu bohužiaľ Yii nerieši. Generátor sa ťa ale spýta, či chceš už vygenerované časti prepísať…

      Riešim to tak, že keď je už veľa úprav, tak tie upravené si odložim, pregenerujem a potom „zmergeujem“. Ak úprav veľa nebolo dám to všetko prepísať.

      Hlavne sa snažím aby mi takáto situácia nenastala.

      1. Michal

        Re: čo urobí generátor ak prídam stĺpec do DB?

        To snad nemyslite vazne :-) .
        uz Doctrine 1 tohle mela vyresene – generovane tridy jsou jsou tzv. Base<ModelName> a Vam pouze pokud uz ji nemate vygeneruje prazdnou <ModelName>.

        Pridavani atributu do modelu je prece bezna soucast vyvoje, jestli je v tom FW takovahle bota tak mi to nestoji ani za napsani URL do prohlizece

        1. ujovlado

          Re: čo urobí generátor ak prídam stĺpec do DB?

          Asi sme sa nepochopili.

          Pridanie atribútov vôbec nie je problém – model sa dá jednoducho pregenerovať. Avšak ak máš už vygenerovaný celý CRUD (Controller + všetky views) a v jednej z týchto častí niečo upravíš, potom pridáš atribút a následne chceš opäť všetko pregenerovať – samozrejme narazíš na konflikt.

          Doctrine ti to automaticky „mergeuje“?

          1. gawan

            Re: čo urobí generátor ak prídam stĺpec do DB?

            nie nemergeuje, prečítaj si čo písal @Michal ešte raz. Doctrine generuje BaseModel, do ktorého ty nikdy nezasahuješ, ale keď robíš nejaké úpravy tak ich robíš v potomkovi BaseModelu. takže kľudne môžeš pregenerovať BaseModel koľko krát chceš a tvoje modifikácie to nejako neovplyvní, lebo sú v potomkovi.

            1. ujovlado

              Re: čo urobí generátor ak prídam stĺpec do DB?

              Čítal som to. Neviem, no, ja osobne to v Yii ako problém nevidím. Je to tak navrhnuté – tak to funguje.

              Sú prípady kedy ti stači dopísať políčko do views, pretože Yii si info o nových stĺpcoch automaticky naťahuje z db a sú prípady, kedy potrebuješ urobiť toho viac. ;-) Yii mi uľahčuje prácu, lebo vie generovať všetko.

              Ako je to v Doctrine? Vygeneruje len model alebo i controller a views?

              1. Michal

                Re: čo urobí generátor ak prídam stĺpec do DB?

                Doctrine 1 generuje na prani i CRUD, ma celkem dost cli prikazu na generovani:

                doctrine
                :build Generate code based on your schema
                :build-db Creates database for current model (doctrine:create-db)
                :build-filters Creates filter form classes for the current model
                :build-forms Creates form classes for the current model
                :build-model Creates classes for the current model
                :build-schema Creates a schema from an existing database
                :build-sql Creates SQL for the current model
                :clean-model-files Delete all generated model classes for models which no longer exist in your YAML schema (doctrine:clean)
                :create-model-tables Drop and recreate tables for specified models.
                :data-dump Dumps data to the fixtures directory
                :data-load Loads YAML fixture data
                :delete-model-files Delete all the related auto generated files for a given model name.
                :dql Execute a DQL query and view the results
                :drop-db Drops database for current model
                :generate-admin Generates a Doctrine admin module
                :generate-migration Generate migration class
                :generate-migrations-db Generate migration classes from existing database connections
                :generate-migrations-diff Generate migration classes by producing a diff between your old and new schema.
                :generate-migrations-models Generate migration classes from an existing set of models
                :generate-module Generates a Doctrine module
                :generate-module-for-route Generates a Doctrine module for a route definition
                :insert-sql Inserts SQL for current model
                :migrate Migrates database to current/specified version

                Ja pouzivam vlastne jenom doctrine:build –all –and-load coz mi podle aktualniho databazoveho schema.yml pregeneruje BaseModel tridy (ze kterych jak kolega vyse upresnil dedim moje custom Model tridy), formulare modelu a dalsi veci.
                Kompletni CRUD vygenerujes pomoci generate-module (http://www.symfony-project.org/jobeet/1_4/Doctrine/en/03#chapter_03_see_it_in_action_in_the_browser)
                (v symfony by to melo byt naprosto stejny)

                Sve custom formulare delam nad modely zase podedene z vygenerovanych, takze kazdym pregenerovanim ziskam funkcnost i do nich, pouze pokud jsou sepsane tak, aby byly zamerne omezeny na konkretni pole, tak tam ty nove musim samozrejme pridat.

                Doctrine jako ORM by se nemelo zabejvat generovanim cehokoli jinyho nez jsou veci ohledne DB a Modelu, coz je taky zakladni myslenka nove Doctrine 2.
                Ta stara 1ka je celkem prasarna, ale funguje 100% a ma par moc peknych featur pro pristup k datum :-).

        2. Kolemjdoucí

          Re: čo urobí generátor ak prídam stĺpec do DB?

          To snad nemyslíš vážně :-) To je tak těžké si Base třídu vygenerovat a změny dělat taky ve vlastní třídě?

  3. drla

    Re: Generovanie kódu s Yii framework

    Nie , pokial ja viem ten generator je „hlupy“ a vzdy ked cokolvek generujes ti to natvrdo prepise… Cize da sa vyuzit len na prvotne generovanie modelu , contolllerov a views…

    1. ujovlado

      Re: Generovanie kódu s Yii framework

      1. Aj si si to vyskúšal? Či len píšeš, lebo ti niekto povedal, že je hlúpy?
      2. V čom teda generuješ kód?

      Generátor sa ťa spýta na každý jeden súbor, ktorý už existuje – že či ho chceš prepísať (píšem to i vyššie v diskusii).

      Ďalšia vec je, že ak často potrebuješ pridávať stĺpce do databázy a následne pregenerovávať kód asi niečo nebude v poriadku s návrhom, hmm?

      1. drla

        Re: Generovanie kódu s Yii framework

        Keby som to neskusal tak neodpisujem ;) dal som do uvodzoviek ze je hlupy, co neznamena ze je zly a tym padom plati ze sa da vyuzivat len na prvotne generovanie modelu a vsetko co si napisal je pravda…

        inteligentny by mi pripadal vtedy keby pri re-generovani modelu vedel odlisit povodnu sablonu podla ktorej generuje od customizovanych metod a tym padom by ich neprepisal.

        Nepridavam stlpce do tabulky casto ale sem tam to potrebujes , ale zas to nie je ziadna katastrofa a jednoducho si pridam nejake validacne pravidlo popripade label rucne a je to vyriesene…

        1. ujovlado

          Re: Generovanie kódu s Yii framework

          Ak generuješ cez Gii, je tam na to veľmí jednoduchý diff – bohužiaľ len na zobrazenie zmien …

      1. drla

        Re: Generovanie kódu s Yii framework

        cau, ak bude mat den 48 hodin tak budem pokracovat :))) bohuzial je to o volnom case a ten ani nahodou nemam… aj na zajtra.sk serial zakapal po 4 castiach, tiez asi nema cas ;) mozno na buduci mesiac nieco pripravim , ale ako si mi to komentoval bolo by asi vhodnejsie to nasmerovat inym smerom ;)

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3502