Diskuze: Frameworky vs. znalost programovacího jazyka

Tvůrce

Zobrazeno 45 zpráv z 45.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.
Mohl bys sem dát nějakou ukázku elegance Smarty?
Podle mne jestli má framework smysl a opravdu pomáhá, tak proč ho nepoužívat ... například jQuery podle mne značně ulehčuje práci ...
Frameworky pro HTML&CSS a podobné jazyky bych nikdy nepoužil ...
Totální vypatlanost
Ano, na užitečnost jQuery jsem už také přišel. Stále mi však uniká užitečnost ostatních frameworků.
K frameworku HTML: Tu tabulku v jednom dnešním příspěvku jsem vygeneroval v jazyku HAML, takže takový nástroj občas také offline použiji.
Je vše kratší a přehlednější, helpery řeší nepřehlednost PHP funkcí, pružnost a dědičnost šablon, snadné konfigurace, cachování... Je toho spousta.
To je možná hezké, ale nic z toho jsem zatím neviděl ani v ukázkách. Stále mi to připadá delší, složitější a méně přehledné než v čistém PHP.
... i to cachování PHP dělá skoro samo. Stačí mu to jen říct.
<?=$foo['bar']?>
{$foo.bar}
Neříkej mi, že ti to nepřijde přehlednější.
<?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}
(Vzato ze smarty.net)
<?php echo htmlspecialchars(strtolower($foo),ENT_QUOTES,'UTF-8'); ?>
{$foo|lower|escape}
1. Mně stačí
$foo->bar
2. To si snad dělají srandu? To neumí normalizovat? To neumí OOP? To se pak dělají blbě všechny šablony.
$foo
3.
$foo
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.
Nejsem si jistý, víš vůbec co je OOP? Protože mě trohu tvoje odpovědi matou.
Třeba tohle jsem dělal dnes
http://www.itnetwork.cz/dev-lighter/173
Není to sice HTML, ale snad nepohrdneš XML.
A chtěl bych tě vidět, jak bys ve Smarty udělal třeba tohle:
http://www.itnetwork.cz/…-z-databaze/
Š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.
V PHP objektech by neměl být výstup, ten by měl být v šablonách.
To si děláš srandu? Však v tom objektu žádný výstup nemám.
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í.
To je hloupost, protože ty jazyky jsou stejné, jen Smarty má o něco kratší zápis. Mají tedy stejný účel princip a provází je stejné problémy.
Už jsem psal, že nejde o délku, ale přehlednost. Jde o ten vzhled, který webdesignerovi dodává lepší prostředí.
A ty necháš webdesignera psát takovou složitou šablonu? Ten se přece má zabývat designem webu a ne nějakým pseudokódem.
No však ano, ten přece do Smarty nijak nezasahuje a píše v HTML.
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.
Jak si Smarty poradí s tím, když designer změní strukturu HTML? Třeba přidá nebo ubere sloupec, vloží tabulku apod?
S čím by si měl radit? Struktura HTML nijak nenarušuje vypisování Smarty.
sdraco: Jak už jsem psat, nejde o délku. Proč myslíš, že Nette používá Latte? Protože Latte i Smarty rozděluje práci mezi webdesignera a programátora.
Nic, necháme toho, kdybys našel někdy nějaký příklad který má smysl,
tak mi ho prosím pošli, abych věděl k čemu to Smarty je
A jak potom Smarty ví, do kterých míst v tom HTML má uložit prezentovaná data? Podle čeho se v tom HTML orientuje?
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í.
Takže vidí jen tohle?
{}
<a href="{}">{}</a>
<a href="{}">{}</a>
<a href="{}">{}</a>
{}
There were no rows found.
{}
A co když zasáhne do těch {}
, nebylo by vhodnější je také
skrýt?
Přesně. Pak by nevěděli kde se nachází data z proměnné a kde je prázdno.
Pro odlišení od okolního textu bych před názvy proměnných přidal znak
$
. Takže místo
<a href="{$bar.zig}">{$bar.zag}</a>
<a href="{$bar.zig2}">{$bar.zag2}</a>
<a href="{$bar.zig3}">{$bar.zag3}</a>
by pak bylo jen
<a href="$zig">$zag</a>
<a href="$zig2">$zag2</a>
<a href="$zig3">$zag3</a>
Nebylo by to pak lepši?
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ý ?
Jedu podle: Beginning PHP and MySQL E-Commerce, 2nd Edition; Cristian Darie (tady se dá juknout na kódy: http://www.apress.com/9781590596487?…)
Zobrazeno 45 zpráv z 45.