PHP

Pozvánka na livestream: Gephart – Nástroj pro rychlý vývoj webů

Publikováno PHP

Ve spolupráci s Péhápkaři budu v úterý 25. července v 19:00 povídat na livestreamu na Twitchi o svém PHP frameworku Gephart, a to hlavně o tom, v čem se odlišuje a v čem přináší (podle mne) přidanou hodnotu. Tím myslím hlavně generátor kódu (gephart/generator-edition), díky kterému se rutinní administrace stávají záležitostí jednotek hodin.

Více informací najdete na FB události: facebook.com/events/105231310143537.

Číst celé

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é

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é