Geek tričko zdarma Python týden
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python
Avatar
Šimon Rácz
Člen
Avatar
Šimon Rácz:27.12.2018 15:31

Zdravím,

jsem PHP programátor a nedávno jsem začal s API. Používám Laravel. Při přidání nové funkcionality jde obyčejně o docela repetitivní proces:

  1. Migrace - vytvoření sloupců v databázi pro data
  2. Factory - tu využívám stejné sloupce, jen do nich vložím "dummy data"
  3. Seeder - zavolám si factory
  4. Model - Tu většinou nedělám v podstatě nic, jelikož Eloquent má dost powerful nástroje
  5. Controller - RESTful routy, stále to samé dokola... Response přes Fractal
  6. Transformer - Zase vypisuji ty samé sloupce jako v migraci a factory pro JSON výstup...
  7. Vytvořit routes pro CRUD - tu se v Laravelu jedná o jeden řádek, tak to není tak hrozný (methoda apiResource)
  8. Otestovat

Zkusil jsem: Zkoušel jsem si vytvořit package s nástroji, které bych mohl dědit (Controller s automatickými metodami index, show, store, update a destroy), atp...

Chci docílit: Kód je obyčejně dost podobný, ne-li funkcionálně stejný, jen se mění pole v databázi a data. Existuje nějaký již zavedený způsob automatizace těchto záležitostí?

 
Odpovědět 27.12.2018 15:31
Avatar
Odpovídá na Šimon Rácz
Martin Štěpánek :27.12.2018 18:36
  1. Nevím jak to má Laravel, ale většinou fw mají nástroje pro generování migrací, controllerů atd (já dělám v Yii2), pokud Laravel žádné nemá, tak si můžeš nějaké napsat.
  2. Pokud opravdu je kód hodně podobný, tak vždy jde naprogramovat nějaký configurable object, který pak použiješ na více místech. Pokud například všude pro každou entitu v db máš endpoint pro vytvoření této entity, tak můžeš udělat object, který se o tento endpoint bude starat. Pak mu můžeš v konfiguraci předávat název objektu, který má vytvořit a on už sám může načíst data (post/get), vložit je do modelu a nechat model zvalidovat.
Nahoru Odpovědět  +1 27.12.2018 18:36
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Šimon Rácz
Člen
Avatar
Odpovídá na Martin Štěpánek
Šimon Rácz:27.12.2018 18:48

Ano, Laravel má generátory, které generují kostru, do které se pak dají zapsat data. Zkoušel jsem si udělat nástroj, který generuje controller metody, factory, validatory atp... z modelu, který napíšu jen jednou. Jen mě překvapuje, že Laravel podobné nástroje nemá. Díky za odpověď.

 
Nahoru Odpovědět 27.12.2018 18:48
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Šimon Rácz
patrik.valkovic:27.12.2018 21:12

Laravel má generátory v artisanu. Pokud se ti skutečně mění jen pár věcí, tak si napiš třídu která bude používat atributy potomka a pokaždé z ní jen vytvoř potomka. Poté si můžeš napsat vlastní command, který ti automaticky vygeneruje seedy, migrace atd.

Nahoru Odpovědět 27.12.2018 21:12
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.