Avatar
Kit
Redaktor
Avatar
Kit:

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é?

Odpovědět  +2 13.8.2013 21:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

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.

Nahoru Odpovědět 13.8.2013 21:45
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

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

Nahoru Odpovědět  +1 13.8.2013 21:46
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

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?

Editováno 13.8.2013 21:55
Nahoru Odpovědět  +1 13.8.2013 21:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Kit
Honza Bittner:

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 :)

Nahoru Odpovědět  +1 13.8.2013 21:56
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Honza Bittner
Kit:

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.

Editováno 13.8.2013 22:01
Nahoru Odpovědět 13.8.2013 21:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

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.

Nahoru Odpovědět 13.8.2013 22:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

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.

Editováno 13.8.2013 22:03
Nahoru Odpovědět 13.8.2013 22:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

... i to cachování PHP dělá skoro samo. Stačí mu to jen říct.

Nahoru Odpovědět 13.8.2013 22:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:
<?=$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}
Nahoru Odpovědět 14.8.2013 6:11
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

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
Nahoru Odpovědět  +2 14.8.2013 10:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Ori
Člen
Avatar
Odpovídá na Kit
Ori:

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 ...

 
Nahoru Odpovědět  +1 14.8.2013 17:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na Ori
Kit:

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.

Nahoru Odpovědět 14.8.2013 17:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Ori
Člen
Avatar
Ori:

mozes uviest prezmenu nejaky kod ty ?

 
Nahoru Odpovědět 14.8.2013 17:40
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

Nejsem si jistý, víš vůbec co je OOP? Protože mě trohu tvoje odpovědi matou.

Nahoru Odpovědět 14.8.2013 17:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na Ori
Kit:

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/

Nahoru Odpovědět 14.8.2013 17:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Š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.

Nahoru Odpovědět  +1 14.8.2013 17:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

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.

Nahoru Odpovědět 14.8.2013 17:52
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Kit
Jiří Gracík:

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.

Nahoru Odpovědět  +2 14.8.2013 17:53
Creating websites is awesome till you see the result in another browser ...
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

V PHP objektech by neměl být výstup, ten by měl být v šablonách.

Nahoru Odpovědět 14.8.2013 17:54
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

To si děláš srandu? Však v tom objektu žádný výstup nemám.

Nahoru Odpovědět 14.8.2013 17:58
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

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 :)

Nahoru Odpovědět  +3 14.8.2013 17:58
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na David Čápka
Inoue Yūki:

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.

Nahoru Odpovědět 14.8.2013 18:03
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

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ě.

Nahoru Odpovědět  +1 14.8.2013 18:05
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na David Čápka
Inoue Yūki:

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í.

Nahoru Odpovědět 14.8.2013 18:06
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

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.

Nahoru Odpovědět 14.8.2013 18:10
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na David Čápka
Inoue Yūki:

Už jsem psal, že nejde o délku, ale přehlednost. Jde o ten vzhled, který webdesignerovi dodává lepší prostředí.

Nahoru Odpovědět 14.8.2013 18:13
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

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.

Nahoru Odpovědět 14.8.2013 18:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

No však ano, ten přece do Smarty nijak nezasahuje a píše v HTML.

Nahoru Odpovědět 14.8.2013 18:24
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Smarty si to HTML parsuje?

Nahoru Odpovědět 14.8.2013 18:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

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.

Editováno 14.8.2013 18:37
Nahoru Odpovědět  +2 14.8.2013 18:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Jak si Smarty poradí s tím, když designer změní strukturu HTML? Třeba přidá nebo ubere sloupec, vloží tabulku apod?

Nahoru Odpovědět 14.8.2013 18:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

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.

Nahoru Odpovědět 14.8.2013 18:50
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

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 :)

Nahoru Odpovědět 14.8.2013 18:51
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

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?

Nahoru Odpovědět 14.8.2013 18:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

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í.

Nahoru Odpovědět 14.8.2013 18:58
Avatar
Kit
Redaktor
Avatar
Kit:

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?

Nahoru Odpovědět 14.8.2013 19:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

Přesně. Pak by nevěděli kde se nachází data z proměnné a kde je prázdno.

Nahoru Odpovědět 14.8.2013 19:07
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Inoue Yūki
Jiří Gracík:

Nepleteme si designera a kodera?

Nahoru Odpovědět 14.8.2013 19:11
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Názvy proměnných by mohly být místo těch {}.

Nahoru Odpovědět 14.8.2013 19:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

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?

Nahoru Odpovědět  +1 14.8.2013 19:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

Mno, to už není na mě. :)

Nahoru Odpovědět 14.8.2013 19:18
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Aha, to už by nebyl Smarty, ale Heredoc :)

Nahoru Odpovědět 14.8.2013 19:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Marek Šafránek:

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?…)

Nahoru Odpovědět 2.5.2015 21:43
Stojí-li něco za námahu, je třeba to udělat pořádně...
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.

Zobrazeno 45 zpráv z 45.