Portál AbcLinuxu, 30. dubna 2025 17:26
Ač jsem se tomu bránil zuby nehty, nechtěl si to připustit, nakonec to stejně jinak nejde. PHP je pěkný jazyk, dá se pomocí něho realizovat spousta aplikačních řešení. Ale to je vše. Všichni víme, jak je těžké "rozumně" kombinovat PHP a HTML, tedy co se oddělení aplikační a prezentační logiky týče.
Pokud se snažíme a kód nijak "neprasíme", tak řešení najdeme - Smarty Templates Engine, Nette, apod. Ale pořád to není ono.
Přemýšlel jsem a zjišťoval jsem, jakou náhradu při vývoji aplikací namísto PHP použít. Po nějaké době zkoumání jsem se nerozhodl. Můžete mi někdo poradit? Javu, RoR, Grails, ...?
Tiskni
Sdílej:
PHP je pěkný jazykPHP je příšerný jazyk. Snad ještě příšernější než Céčko.
Všichni víme, jak je těžké "rozumně" kombinovat PHP a HTML, tedy co se oddělení aplikační a prezentační logiky týče.Je to úplně stejně těžké jako u jiných jazyků. Odlišnost je jen v tom, že v PHP je lze naprosto triviálně mixovat, což se (světe zboř se!) občas hodí.
Přemýšlel jsem a zjišťoval jsem, jakou náhradu při vývoji aplikací namísto PHP použít.Pokud máš rád statické typování, pak Java nebo ASP.NET (MVC?) přijde k duhu. Pokud ti dynamické nevadí a nehodláš nijak měnit paradigma, pak můžeš s klidem zůstat u PHP – Python nebo Ruby ti můžou nabídnout nanejvýš lepší frameworky, na druhou stranu je zřejmé, že hosting pro PHP najdeš výrazně snáz a i to se počítá. Pokud už tě sere (stejně jako mne) request/response programovací model, pak komponentové frameworky jsou to pravé. Osobně doporučuju javovský Wicket (killer fíčura pro mne: zápis vazby mezi kódem a šablonou je bezkonkurenčně nejlepší ze všech webových frameworků, co jsem viděl).
PHP je příšerný jazyk. Snad ještě příšernější než Céčko.PHP je příšerný jazyk stejně jako třeba Python. Ale aspon ne tak příšerný jako C++. :-]] sveho casu jsem si prosel pres projekty v ruznych jazycich, mimojine Java, C a (obligatni) LISP. a pak jsem se po nekolika letech vratil na jeden projekt k PHP... a ono, kdyz se spoji nektere ``zvyky'' z javy s (byt namuj vkus omezenyma) dynamickama prvkama PHP... da se v tom programovat vcelku hezky a rozumne. ...az jsem se divil, proc jsem na to PHP tak moc nadaval, kdyz stacilo nadavat jenom ``mirne''. na druhou stranu, kdyz jsem pred pul rokem delal jeden projekt v jave, bylo to pro me utrpeni... ta tam byla elegance LISPu, ten tam byl vykon cecka...
Me na PHP serou dve veci:
- naprosto nekonzistentni, zmatena a podivne fungujici standardni knihovna
- zmatek v porovnavacich operatorech a automatickych pretypovanich. (retezec "0" se vyhodnoti jako false, ale "00" jako true). Pri psani se tomu muzete vyhnout, pri cteni ale ne.
naprosto nekonzistentni, zmatena a podivne fungujici standardni knihovnav tomto si muze smele podat ruku s pythonem
Pri psani se tomu muzete vyhnout, pri cteni ale ne.nevim, jestli je to relevantni argument, ale existuji i horsi veci nez je ``cteni'' zdrojaku v PHP... treba ``cteni'' zdrojaku v Perlu :-]] nechci, aby to vypadalo jako obhajoba PHP... je to priserny jazyk... ale ostatni jazyky jsou obdobne priserne. v mnoha ohledech me to pripomina debatu, kdyz jsem jednou s francouzema a italama diskutoval o tom, kdo je horsi premier, jestli berlusconi, sarkozy nebo topolanek... clovek si proste nevybere a nejak se s tim musi smirit...
...debatu, kdyz jsem jednou s francouzema a italama diskutoval o tom, kdo je horsi premier, jestli berlusconi, sarkozy nebo topolanek...
Paroubek. ~_^
pak můžeš s klidem zůstat u PHP – Python nebo Ruby ti můžou nabídnout nanejvýš lepší frameworky, na druhou stranu je zřejmé, že hosting pro PHP najdeš výrazně snáz a i to se počítá.
Nebo třeba taky větší rychlost a míň bugů..
a co takhle vložit prezentační logiku přímo do databáze
> Všichni víme, jak je těžké "rozumně" kombinovat PHP a HTML, tedy co se oddělení aplikační a prezentační logiky týče.
Tak například já to nevím a rád se to od tebe dozvím.
Uplne nechapu, o co vam jde. Jestli dostavate zprasene projekty v PHP k dodelani, tak vas preci zadny dalsi genialni jazyk nezachrani. Leda byste je komplet prepisoval, ale na to muzete pouzit PHP a nejaky framework a praseni ostatnich vas nemusi zajimat. Teda pokud to praseni nepochazi primo od vas, to vas potom ale nezachrani zadny jazyk na svete.
Praseni kodu je jazykove nezavisle.
Ja povazuju PHP za vyborny sablonovy jazyk, naopak treba Smarty nemuzu vystat (nedavno jsem pul hodiny resil, jak zjistit predposledni radek tabulky, nakonec reseno hackem).
> Možnosti PHP svádějí k míchání PHP a HTML takovým způsobem, že se v tom ve finále ani to prase nevyzná
Svést tě k tomu může i Java (všechno třeba můžeš nabouchat do nějakého JSP) nebo spousta dalších (a já si troufám říci, že drtivá většina) jazyků.
Já jsem z PHP přešel na RoR, ale po několika projektech jsem od něj upustil, protoze je tam na me trochu moc magie. Ted asi rok dělám na Djangu (python) a nemůžu si vynachválit, je to podle mě mnohem srozumitelnější a proti RoR má úžasný sustém na postavení adminu.
U prakticky čehokolik kromě PHP je ale potřeba se něco naučit, než v tom človek může dělat ... u djanga je to cca 100 stranek textu, ktere by mel clovek projit a pak to muze zkusit ;) ... btw: ted vychazi o djangu clanek nekde ;) na zdrojaku?
Problém Djanga je když chceš dělat něco jinýho, než readkční systém, musíš tam furt něco hackovat... RoR se dá v Pythonu "napodobit" třeba pomocí CherryPy + Elixir + Jinja2, ale k RoR to má pořád hodně daleko.
Problém Djanga je když chceš dělat něco jinýho, než readkční systém, musíš tam furt něco hackovat...Presne! Je proste videt, ze ten framework pochazi od lidi ze zpravodajstvi... oni s tim vic nez RS delat nepotrebujou.
Robím na Djangu webshop a zatiaľ som takmer nič hackovať nemusel. Ten django push-template systém síce nie je zďaleka dokonalý, ale rozhodne by som netvrdil, že nie je vhodný na nič iné ako redakčný systém.
Btw, čo je na RoR tak úžasné? Čítal som si o ňom a nejak moc výhod oproti Djangu som nepobadal: ORM + automatická generácia adminu by mala byť podobná, templating podobný, atď. Kde je nejaký výrazný rozdiel?
Django je framework, tak srovnávejme Django a Zend Framework.
Pascal jednoznacne!
Jo stím pythonem souhlasím. Vynikajicí zábava je dohledávat tabulatory/odsazení ve zbastleném python kódu promíchaném s větším množstvím html řetězců.
V C++ jde snad psát webové aplikace?
To jde ve všem...
zdravim,
taky jsem mel podobny nazor. Jenomze dneska pisi radeji i jednoduche konsolove "aplikacky" v Jave.
Casem zjistite, ze jich napisete par desitek a ze se Vam to do neceho hodi. Pak staci vetsinou pouzit hotovou tridu nebo zkopirovat kus logiky.
vzdyt je to naprosto preplacany komplexni jazykJazyk přece nemůže být přeplácaný, to je nesmysl. Java je naopak poměrně přísný jazyk, není zdaleka tak flexibilní jako třeba C++. Bohatost knihoven bych také rozhodně nenazýval přeplácaností, protože není nutné ty knihovny využívat. Spíše je výhoda, že jsou k dispozici, že si člověk nemusí ty věci dělat sám.
proste obcas kod nefungoval, vystup byl nulovy nebo neuplny a ja nevedel nic, a to i kdyz jsem mel vystup vsech chyb aktivovanyTohle je stejné i u jiných jazyků. U PHP se chyby snadno chytají, například často používám velmi jednoduše řešené odesílání chybových zpráv e-mailem, takže když je někde problém, rychle se to dozvím (nemusím často prolézat chybový log).
Na jednoduche projekty je ale PHP dostacujici, jinak by nebyl tak rozsireny.Podle mě je bohužel jedním z důvodů velké rozšířenosti PHP právě fakt, že se v něm snadno prasí. Jinde by kompilátor "vývojáře" nakopal do řiti, kdežto PHP jen vydá varování (které si "vývojář" samozřejmě nepřečte - a i kdyby, tak ho bude ignorovat) a tak nějak běží dál. Některé PHP skripty, které jsem viděl, byly tak neuvěřitelně prasácké, že jsem ani netušil, že jde tak strašně prasit. Tomu mohou konkurovat jen skripty v JavaScriptu.
presel jsem na Python + Django, jelikoz to ma velkou vyhodu, ze se Python da vyuzit i na spousta jinych mistechTo jde PHP použít také. Mám v něm napsáno mnoho různých skriptů pro spouštění z příkazové řádky, protože je velmi snadné je napsat. Pythonu jsem nepřišel na chuť a obecně ho nemám příliš rád kvůli jeho žravosti.
Některé PHP skripty, které jsem viděl, byly tak neuvěřitelně prasácké, že jsem ani netušil, že jde tak strašně prasit.Nejaký príklad by nebol?
Jazyk přece nemůže být přeplácaný, to je nesmysl.Ale muze. Kdyby se splnilo vsechno, co kdo navrhoval pro Javu 7...
public function render($sablona) { foreach ($this->_attributes as $attributeKey => $attributeValue) { $$attributeKey = $attributeValue; } include($sablona); }Pričom šablóna by bol len obyčajný HTML súbor mixovaný s PHP (podobne ako to mixuje smarty s vlastnými značkami).
<div><?php echo $atribut; ?></div>
nutnosť zápisu vygenerovaných PHP súborovProč by mělo být potřeba zapisovat vygenerované soubory? Tomu nějak nerozumím...
Pričom šablóna by bol len obyčajný HTML súbor mixovaný s PHP (podobne ako to mixuje smarty s vlastnými značkami).Mixování HTML a PHP (i v šabloně) je prostě prasárna a těžko mě někdo přesvědčí o opaku. Šablona má být inertní, neobsahovat PHP kód. Pak se nemusí prasit pomocí include apod., prostě se zpracuje tak, že se vyhodnotí symboly (resp. obecně jazykové konstrukty) uvnitř. Mít v šablonách PHP je blbost už kvůli bezpečnostnímu riziku. Například když mám šablony uložené v databázi, kde s nimi pracují běžní uživatelé (kteří si tak mohou třeba upravit svoji uživatelskou stránku), je PHP kód vysloveně na závadu.
Mixování HTML a PHP (i v šabloně) je prostě prasárna a těžko mě někdo přesvědčí o opaku. Šablona má být inertní, neobsahovat PHP kód. Pak se nemusí prasit pomocí include apod., prostě se zpracuje tak, že se vyhodnotí symboly (resp. obecně jazykové konstrukty) uvnitř. Mít v šablonách PHP je blbost už kvůli bezpečnostnímu riziku. Například když mám šablony uložené v databázi, kde s nimi pracují běžní uživatelé (kteří si tak mohou třeba upravit svoji uživatelskou stránku), je PHP kód vysloveně na závadu.
Beru to bezpečnostní riziko, to je jasné. Pokud ale sablony nejsou v databazi a delaji je duveryhodni lide, nevidim duvod PHP nepouzit. Jaký je rozdíl mezi použitím PHP jako šablonovacího jazyku a speciálního zvlášť parsovaného šablonovacího jazyka? Používám Zend_View a žádné include či co to nepotřebuji ...
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.