Už mnohokrát jsem se setkal s propagováním některého "úžasného"
frameworku. Když jsem se na něj podrobně podíval, zjistil jsem, že dělá
něco, co ten jazyk umí v základní konfiguraci, mnohem lépe a rychleji.
Například Smarty. Na jejich webu je ukázka "ošklivé šablony v PHP",
která je tak hnusně udělaná, že by to tak nenapsal snad nikdo. Pod tím je
"úžasná šablona ve Smarty", která je však složitější a méně
přehledná, než šablona udělaná přímo v PHP.
Na jednu stranu uznávám, že vývoj jde různými cestami a čas ukáže,
která z těch cest je lepší. Uznávám také právo na existenci Smarty -
vždyť sám jsem si kdysi také napsal vlastní šablonovací systém. Vadí mi
však, když mi někdo takové nedodělané frameworky vnucuje a tvrdí, že je
to nejlepší, co mohu použít.
Podobně jsou na tom třeba různé ORM frameworky. Jakou vlastně mají
výhodu proti PDO? Podle mne vůbec žádnou. Nenabízí žádnou užitnou
hodnotu navíc, co by PDO nezvládlo. Pouze omezují programátora, protože na
některé dotazy ORM nelze použít.
Co vy? Myslíte si, že frameworky jsou k vývoji aplikací nezbytné nebo si
jako já myslíte, že programovací jazyky se svými knihovnami a moduly již
obsahují pro vývoj vše potřebné?
Podle toho, v jakým jazyku pracuješ. Například u PHP je framework prostě
masem, protože v základní konstrukci se v PHP pracovat nedá. Alespoň ne
slušně.
Jestliže mluvíme o Smarty, mluvíme o dvou frontách. Jedna stojí za
šablonovacímy systémy, druhá je zarputile odmítá. Já stojím za Smarty.
Stejně budeš muset napsat nějaký systém ovazující šablonu. Smarty a
ostatní jen přidávají příjemnější a přehlednější vzhled.
S PDO souhlasím. Možná "frameworky", které skládají SQL dotazy jsou
užitečné, ale jinak nevidím nic, co by PDO nezvládlo.
To asi záleží hodně na tom, co vlastně požaduju vytvořit. Například
herní framework XNA. Chci si udělat vše vlastní ? Vlastní vykreslování,
správa grafického obsahu ? Nebo chci vytvořit hru ? Pokud druhá věc, vezmu
nějaký slušný základ -> herní framework
K PHP se vyjadřovat moc nebudu, začínám v něm a tak nemůžu soudit
Stále jsem nepochopil to Smarty a ostatní jen přidávají
příjemnější a přehlednější vzhled Zatím všechny šablony, které
jsem ve Smarty viděl, vypadaly mnohem hůř než šablony napsané v čistém
PHP. Právě proto mi uniká smysl Smarty.
<?php if(!empty($foo)): ?>
<?php foreach($foo as $bar): ?>
<a href="<?=$bar['zig']?>"><?=$bar['zag']?></a>
<a href="<?=$bar['zig2']?>"><?=$bar['zag2']?></a>
<a href="<?=$bar['zig3']?>"><?=$bar['zag3']?></a>
<?php endforeach; ?>
<?php else: ?>
There were no rows found.
<?php endif; ?>
{foreach $foo as $bar}
<a href="{$bar.zig}">{$bar.zag}</a>
<a href="{$bar.zig2}">{$bar.zag2}</a>
<a href="{$bar.zig3}">{$bar.zag3}</a>
{foreachelse}
There were no rows found.
{/foreach}
trochu som nepochopil tvojej odpovedi .... naco potrebujes v SABLONE OOP ?
... myslim si ze OOP sa ma riesit v jadre aplikacii a nie v sablone .. ta iba
spracuje vlozene data... Ja som zastancom fameworkov ako napriklad Symfony,
Codeigniter, Smarty, JQuery, Sencha, PhoneGap... FW riesi vela problemov za
uzivatela... je samozrejme vediet ktory z FW budeme potrebovat ... napriklad
taky PhoneGap ... je to skvela vec a sposob ako napisat aplikaciu len raz a
spustitstaci ju skompilovat ju 5x pre 5 roznych mobilnych OS ... to by si chcel
pre kazdy OS pisat v nativnom kode ? ...jo BTW Smarty dokaze pristupovat k
objektom a ich metodam len samozrejme odsudzujme nieco bez toho aby sme vedeli
ze co to vlastne dokaze ...
kazdopadne UTFG.cz ...
Pokud vím, Smarty nedokáže ohlídat validitu výstupního dokumentu a s
naprostým klidem ti do výstupu vloží překřížené či neukončené HTML
tagy. Když tu šablonu uděláš v OOP, tak se ti to stát nemůže.
Maximálně použiješ neznámou značku nebo ji použiješ v nesprávném
kontextu.
Šablona napsaná v OOP je mnohem jednodušší na údržbu než ty hrůzy ve
Smarty, viz výše.
Šablona v OOP je podle mne taková, že když třeba v levém sloupečku
chci umístit menu, tak do šablony strčím objekt $menu a
nezatěžuji šablonu nějakými cykly.
Nechci znova říkat, jak nepřehledný to je. Napomáhá tomu taky absence
komentářů, ale to vynechme. Ve Smarty by to šlo docela jednoduše a
přehledněji, nevídím žádný problém.
Mě frameworky nebaví používat, radši si to napíšu sám, většinu
věcí mohu použít znovu a nebo si je velice snadno doladit sám. V PHP bych
použití viděl, HTML & CSS frameworky jsem nepochopil.
Mně tohle přijde ujeté, to je jako bych si napsal pro modely vlastní
metajazyk co by se překládal do PHP a ukazoval ti že mám o pár znaků
kratší kód.
Jinak co se týče frameworků, tak používám jen ty, co jsou
distribuovány jako součást jazyka. Knihovny ani frameworky třetích stran
zásadně nepoužívám, jelikož jsou většinou špatně napsané nebo dokonce
zbytečné. Není nic horšího, než aplikace slepená z 10ti super
univerzálních frameworků, která by se dala napsat do pár tříd. A pak se
jedna knihovna z toho bastlu změní nebo zmizí, nechtěl bych
Nejde ani tak o délku jako o přehlednost. Ty kódy v PHP při přijdou
vážně jako šílenost. Smarty pak odděluje práci mezi programátory a
webdesignery, což je jedna z největších výhod. Obsahuje bloky, které by se
v PHP dělali složitěji a zase by zničili přehlednost kódu.
Já tedy nevím, ale celý devbook je napsaný bez šablonovacího systému a
nikde se nepoužívá nic složitějšího než cyklus nebo podmínka. Když
chceš psát do šablony složitou logiku, tak je někde něco špatně.
No teď nemám náladu se o tomhle hádat, děláme to každý týden. Ve
Smarty žádná složitá logika neexistuje. To proto, že jsi devbook psal ty a
nebylo potřeba rozdělit práci mezi programátory a webdesignéry. Musel by
jsi cítit ten rozdíl, když ti designér sahá do zelí.
Teď jsem si teprve všiml toho příkladu, je to jako všechny tyhle
příklady jen vykonstruovaná hloupost, kterou by člověk co umí programovat
neudělal. Správně je to takhle:
<?php if(!$foo): ?>
There were no rows found.
<?php endif ?>
<?php foreach($foo as $bar): ?>
<a href="<?=$bar['zig']?>"><?=$bar['zag']?></a>
<a href="<?=$bar['zig2']?>"><?=$bar['zag2']?></a>
<a href="<?=$bar['zig3']?>"><?=$bar['zag3']?></a>
<?php endforeach ?>
Stále jsem neviděl příklad, který by mě přesvědčil, že to Smarty
opravdu k něčemu je.
EDIT: I to empty je k ničemu. Asi přemýšleli jak to nafouknout.
Právě že webdesigner do kódu s {} vůbec nesahá. Existují programy,
které kód v těchto závorkách i skrývají, takže webdesignér vůbec PHP
vidět nemusí a nijak vypisování dat neovlivní.
Mohu poprosit o radu? Jsem zatím dost začátečník, začal jsem zkoušet
nějaké praktické využití OOP PHP a mám knihu, kde je postavený objektově
e-shop. Vypadalo to dobře, ale narazil jsem na využívání jakéhosi Smarty
template, což má být něco na ulehčení práce, moc sem to nepochopil, a z
diskuzí jsem zjistil, že je lepší to vůbec nepoužívat, takže ani nemám
chuť se to nějak do hlouky učit. Uměl by mi někdo poradit směr, jak se
tomu uplně vyhnout, především první kapitoly jsou tam tím zaplevelený
?
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.