Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Frameworky vs. znalost programovacího jazyka

Aktivity
Avatar
Kit
Tvůrce
Avatar
Kit:13.8.2013 21:09

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
13.8.2013 21:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:13.8.2013 21:45

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
Neaktivní uživatelský účet
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Kit
Petr Nymsa:13.8.2013 21:46

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
13.8.2013 21:46
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:13.8.2013 21:53

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
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
Tvůrce
Avatar
Odpovídá na Kit
Honza Bittner:13.8.2013 21:56

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
13.8.2013 21:56
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Honza Bittner
Kit:13.8.2013 21:59

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
Odpovídá na Kit
Neaktivní uživatel:13.8.2013 22:00

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:13.8.2013 22:02

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
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:13.8.2013 22:15

... 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
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 6:11
<?=$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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 10:23

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

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
14.8.2013 17:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Ori I
Kit:14.8.2013 17:35

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 I
Člen
Avatar
Ori I:14.8.2013 17:40

mozes uviest prezmenu nejaky kod ty ?

 
Nahoru Odpovědět
14.8.2013 17:40
Avatar
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 17:44

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Ori I
Kit:14.8.2013 17:46

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
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 17:49

Š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
14.8.2013 17:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 17:52

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
Neaktivní uživatelský účet
Avatar
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 17:53

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
14.8.2013 17:53
Neaktivní uživatelský účet
Avatar
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 17:54

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 17:58

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 Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:14.8.2013 17:58

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
14.8.2013 17:58
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:14.8.2013 18:03

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
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:14.8.2013 18:05

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
14.8.2013 18:05
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:14.8.2013 18:06

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
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:14.8.2013 18:10

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
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:14.8.2013 18:13

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 18:23

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
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 18:24

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
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 18:26

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 Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:14.8.2013 18:33

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
14.8.2013 18:33
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 18:36

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
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 18:50

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
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:14.8.2013 18:51

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
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 18:55

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
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 18:58

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
Neaktivní uživatelský účet
Avatar
Nahoru Odpovědět
14.8.2013 18:59
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Kit:14.8.2013 19:04

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
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 19:07

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
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:14.8.2013 19:11

Nepleteme si designera a kodera?

Nahoru Odpovědět
14.8.2013 19:11
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 19:12

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
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 19:17

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
14.8.2013 19:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:14.8.2013 19:18

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

Nahoru Odpovědět
14.8.2013 19:18
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:14.8.2013 19:23

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:2.5.2015 21:43

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.