Využití komponent v různých frameworcích
- gavec
- Člen | 68
Zdravim, mám takový možna trochu hloupý dotaz, týkající se komponent.
Dá se nějakým způsobem vytvořit komponenta, kterou je možné použít jak
v různých frameworcích, tak v čistém PHP? Dejme tomu, že se komponentě
musí předat i připojení k DB.
Mám za to, že se dá vytvořit komponenta jen tak, že jde znovupoužít jen
na daném FW. To např z toho důvodu, že každý frame může mít odlišný
způsob v přístupování k DB. To by však šlo obejít vytvořením nového
spojení DB v komponentě, což se mi ale nezdá jako dobré řešení.
Má na tohle někdo svůj názor osvědčený praxí?
Předem díky.
- frosty22
- Člen | 373
Tady vůbec nejde o názor, na tohle je naprosto jednoduchá odpověď – prvně záleží, co si představuješ pod pojmem komponenta. Pokud komponentu, jako je v Nette, pak se jedná o buď vizuální či nevizuální samostatnou část webu – vizuální například anketa, nevizuální napříkad knihovna generující faktury. V těchto případech jde o to, do jaké míry využívá framework, jako takový. Pokud bys chtěl udělat knihovnu, která by byla standalone, potom bys nesměl používat žádné objekty Nette, a ani tedy například Nette/Database, v podstatě uplně jednoduše – všechno jsou jen závislosti dané komponenty, na tom co je závislá, to je potřeba dodat.
Pokud postavíš komponentu která bude používat Nette/Database, pak je toto logicky vyžadováno a musel bys ji pak použít spolu s frameworkem a nebo tyto knihovny vypreparovat a přiložit, což je nutné tedy stromově tj. každý další objekt používá další části, například základní objekt Nette/Object …
Toto tedy není přímo odpověď na otázka, ale chci tím říci, že odpověď ani není a z tohoto vyplývá, pokud chceš udělat standalone komponent, nesmíš použít výhod frameworku.
- frosty22
- Člen | 373
Přesně tak, a když se pak podíváš, co využívá Control, tak zjistíš, že další objekty z Nette, a ty opět další objekty, atd. V podstatě framework je balík objektů, které spolu komunikují, jsou svázány a definují pravidla/význam/možnosti následné aplikace.
Na tvém místě bych si spíše kladl otázku, zda-li opravdu je potřeba stavět standalone komponentu – přeci jen pokud se jedná o vizuální, pak její funkční část může být jako knihovna zvlášť a v podstatě i měla by tak být a následná implementace pak může být jako driver pro Nette, Zend, standalone… u tohoto však, čím více to odstíníš, tím více práce to dá a tím méně budeš moci využít možností frameworku, viz zmiňové připojení do databáze, apod.
Například nějaký generátor faktur do PDFka – můžeš udělat objekty
zvlášť, které budou generovat PDFko, budeš mít zvlášť HTML šablonu a
sám v ní použiješ něco jako: echo $invoiceNumber, apod. a potom jen
uděláš driver pro Nette, kde to napojít na komponentu, které se budou
předávat data. Nebo si ulehčíš práci a použiješ latte, ale pak bys již
musel i toto suplovat buď na úrovni driveru.
⇒ tady je právě vidět to ulehčení ve frameworku, a záleží na Tobě,
jak moc se ti vyplatí to dělat standalone.