Séria Doctrine - Úvod

📅   27. 08. 2021
👤   Jan Barášek

Doctrine je pokročilá knižnica PHP na objektovo orientovanú prácu s databázami. Hlavným účelom a cieľom Doctrine je popísať databázovú schému pomocou dátových entít a manipulovať s údajmi plne objektovo orientovaným spôsobom.

Táto paradigma sa nazýva ORM (Object-relational mapping), čo je design-pattern na konverziu (obalenie) údajov uložených v relačnej databáze na objekt, ktorý možno použiť v objektovo orientovanom jazyku. Preto, aby ste pochopili a používali Doctrine, musíte poznať aspoň základy objektovo orientovaného programovania.

Prečo sa učiť doktrínu?

Existuje mnoho dôvodov:

  • Doctrine je najpoužívanejšia databáza ORM, ktorú používa väčšina pokročilých používateľov PHP.
  • Výrazne zjednoduší návrh vašej aplikácie PHP
  • Poskytujete konzistentný spôsob návrhu, verzie, prenosu a zálohovania databázovej schémy
  • Stiahnutím balíka môžete získať množstvo databázových tabuliek bez toho, aby ste museli čokoľvek zisťovať a konfigurovať.
  • Vzťahy medzi tabuľkami sa stávajú skutočnými fyzickými entitami
  • Výstupy databázy nebudú obyčajné netypované polia, ale dostanete skutočné fyzické objekty
  • Získate jednoduchý spôsob, ako vykonávať mnoho operácií súčasne v rámci jednej transakcie
  • Bezpečnosť a odolnosť aplikácií ľahko zvýšite tým, že jednoducho budete vedieť, kedy sa čo stane a že sa to stane bezpečne.
  • Získate ľahko testovateľnú vrstvu kódu a databázy
  • Objavíte celý ekosystém okolo Doctrine, ktorý elegantne rieši mnohé problémy. Často nájdete jednoduché riešenia zložitých problémov, ktoré je inak takmer nemožné ľahko vyriešiť.
  • Naučíte sa veľa nových vecí, preskúmate nové nápady a naplno využijete potenciál databázy.
  • Zbavte sa zložitých dotazov SQL. Doctrine poskytuje vlastné rozhranie na písanie dotazov (DQL), ktoré je veľmi výkonné
  • Aplikácie sa zrýchlia. Ľahko objavíte priestor na optimalizáciu aplikácie, využijete lenivé načítanie a nájdete úzke miesta aplikácie.

Autor tohto článku (Jan Barasek) dlhodobo zastáva názor, že Doctrine je najlepší spôsob práce s databázou PHP. Jednoducho nemá konkurenciu.

Ako začať?

Skôr ako začnete naplno používať Doctrine, musíte si pripraviť vhodné prostredie. Ak s PHP len začínate alebo nemáte staršie znalosti, najlepšou voľbou je nainštalovať Nette Framework s balíkom rozšírenia Baraja Doctrine, ktorý automaticky integruje plnú podporu. Najprv si stiahnite balík prostredníctvom Composer, potom nastavte rozšírenie DI a Doctrine začne pracovať automaticky.

Aby Doctrine fungoval správne, je potrebné pripraviť prázdnu databázu (Doctrine môže pracovať s existujúcim projektom, ale pre prvé kroky je to nevhodné, pretože hrozí prepísanie existujúcich údajov) a nakonfigurovať pripojenie. Keďže Doctrine nie je len databázová knižnica, ale poskytuje pokročilý databázový rámec, musíte vyriešiť ďalšie konfigurácie. Väčšina nastavení je automaticky prepísaná v tomto balíku pre Nette, avšak v minimálnej konfigurácii musí váš server podporovať rozšírenia APCu Cache alebo SQLite3.

Ak bolo všetko správne nakonfigurované, v Nette sa vytvorí nová služba DI Baraja\Doctrine\EntityManager, ktorú môžete injektovať do programu Presenter:

namespace App\FrontModule\Presenters;

use Baraja\Doctrine\EntityManager;

final class HomepagePresenter extends BasePresenter
{
	#[Inject]
	public EntityManager $entityManager;
}

Ak sa vám podarí injektovať základnú službu EntityManager, môžete sa začať učiť a pracovať s Doctrine.

Ako postupovať?

Nasledujúce kapitoly sú kombináciou referenčnej príručky technológie Doctrine, dlhoročných skúseností, návrhových vzorov a hotových riešení. Spoločne prejdeme všetky základné prvky Doctrine od definovania vlastnej entity, cez generovanie fyzickej schémy databázy až po prácu s nástrojom na tvorbu verzií a produkčné nasadenie.

Doctrine používam už veľmi dlho a vyriešil som v nej tisíce prípadov. Ukážeme si tipy a triky, ako používať Doctrine na optimalizáciu rýchlosti databázy a ako vhodne navrhnúť databázu. Doctrine môžete použiť aj pre existujúci projekt (ak spĺňate určité podmienky) a my vám ukážeme, ako na to.

Táto séria článkov bola vytvorená s cieľom pomôcť mojim študentom v oblasti školení a poradenstva. Ak potrebujete niektoré témy podrobnejšie prediskutovať alebo vysvetliť, môžete mi napísať na e-mailovú adresu jan@barasek.com. Keďže ide o pomerne náročnú technológiu, všetky otázky budú považované za platenú konzultáciu.

Jan Barášek     Viac o autorovi

Autor pracuje ako senior vývojár a softvérový architekt v Prahe. Navrhuje a spravuje veľké webové aplikácie, ktoré poznáte a používate. Od roku 2009 získal bohaté skúsenosti, ktoré odovzdáva prostredníctvom tejto webovej stránky.

Rád vám pomôžem:

Kontakt