Gephart – Generátor kódu

Publikováno PHP

Publikoval jsem speciální edici frameworku Gephart, která obsahuje základní generátor kódu, pro snadnější tvorbu CRUDu.

Principiálně to funguje tak, že si naklikáte modul (entitu) a atributy a následně vygenerujete: entitu, repozitář, tabulku v databázi, controller a šablonu pro výpis a editaci.

Lze si tak naklikat naprosto základní administraci a díky tomu, že kód je vygenerovaný, lze v určitém bodě přestat generátor používat a kód si upravit podle potřeb. Continue reading “Gephart – Generátor kódu” »

Číst celé

Gephart – PHP framework

Publikováno PHP

Je načase vyjít s tím ven. Už nějaký čas pracuji na novém projektu, který usnadní workflow pro tvorbu jednoduchých rutinních webů. Nástroj, kde si celý web doslova naklikám včetně designu a výsledkem bude hezký kód, který bude možné bez problému upravovat. (Napojovat na API, generovat exporty, napojení na firemní systémy, a tak podobně.)
Continue reading “Gephart – PHP framework” »

Číst celé

Co je výstupem programátora?

Publikováno Ostatní

Je to kód, který naprogramuje? Jsem názoru, že by to tak určitě nemělo být. Pokud to u některých programátorů tak je, nastává někde asi problém. Kód samotný ve výstupu od programátora je 25% procent času stráveným nad problémem, které vyřeší. 50% by měl věnovat návrhu a architektuře, a zbylých 25% času napsání dokumentace a testů.

Přirovnal bych to s prací designéra, který vytváří logo. Na první pohled je výstupem jen to logo jako takové, ale ve skutečnosti mnoho času věnoval přemýšlení a zkoumání nejlepšího řešení a vytvoření logomanuálu.

Číst celé

PSR-11: Standard pro DI kontejner

Publikováno PHP

Je to pár dní, co byl oficiálně akceptován návrh dalšího ze standardů skupiny PHP-FIG a to interface pro DI (dependecy injection) kontejner. Oficiální znění naleznete na GitHubu a já jsem se rozhodl, že jej zde trochu popíšu, a že se ho budu v komponentě gephart/dependency-injection držet.

Co standard říká?

  1. Identifikátor, podle kterého je položka (objekt) vytahován z kontejneru, musí být řetězec o délce alespoň jednoho znaku. Neměl by mít žádný sémantický význam.
  2. Kontejner musí mít dvě veřejné metody:
    1. get() – má jeden povinný parametr a to identifikátor položky
      – pokud identifikátoru neodpovídá žádná z položek, musí být vyhozena výjimka implementující Psr\Container\NotFoundExceptionInterface (taktéž součástí standardu)
    2. has() – má opět jeden povinný parametr – identifikátor položky
      – vrátí false v případě, kdy by metoda get() vyhodila zmíněnou výjimku
  3. Výjimky vyhozené kontejnerem by měli vyhazovat výjimku implementující Psr\Container\ContainerExceptionInterface.
  4. Doporučuje nepoužívat kontejner jako service locator (doporučuji článek od Davida Grudla). Ve zkratce to znamená, že obecné doporučení je nemít závislost na samotném kontejneru, jen na jednotlivých službách. (Pozor na to, že třeba třída Router, která je běžně závislá na DI kontejneru a vytahuje z něj controller, tak opravdu není závislá na samotném controlleru, a proto to zde nevadí.)

Pokud jste se rozhodli, že se budete držet standardu, je doporučené implementovat interface (kontejneru a výjimek) z toho balíčku: psr/container-implementation.

Číst celé