Řekl bych, že programovat na celkem dobré úrovni už umím, C++ celkem slušně (až na šablonové třídy) ovládám.
Občas bych potřeboval však potřeboval napsat nějakou webovou aplikaci. Jaké zdroje by jste mi doporučili na PHP a související věci (databáze), abych mohl v co nejkratším čase něco napsat?
Děkuji za odpověď
Fórum › PHP
Jak na PHP? + diskuze kolem OOP, frameworků.
pear bych osobně nedoporučil. většina těchto knihoven je několik let zastaralá, na úrovni PHP4, ktere je opravdu out. Na základy se stačí podivat třeba i tady na programujte. chytnes rychle syntaxi a pak uz jen budes patrat po funkcich, ktere by se ti hodily. k tomu je vyborna dokumentace na tom php.net.
ostatne, pro vyvoj webovych aplikaci je dobre pouzivat nejaky framework - velkou vyhodou je automaticke zajisteni bezpecnosti, o kterem se v zacatecnickych kurzech v podstate nedoctes. o tom je ovsem take plno diskuzi, jaky framework vybrat :)
presne tak, ono uplne staci pouzivat rozum a manual.... ked sa naucis pouzivat oboje... nebude problem absolutne s nicim..
hrach napsal:
pear bych osobně nedoporučil. většina těchto knihoven je několik let zastaralá, na úrovni PHP4, ktere je opravdu out. Na základy se stačí podivat třeba i tady na programujte. chytnes rychle syntaxi a pak uz jen budes patrat po funkcich, ktere by se ti hodily. k tomu je vyborna dokumentace na tom php.net.
ostatne, pro vyvoj webovych aplikaci je dobre pouzivat nejaky framework - velkou vyhodou je automaticke zajisteni bezpecnosti, o kterem se v zacatecnickych kurzech v podstate nedoctes. o tom je ovsem take plno diskuzi, jaky framework vybrat :)
osobne niesom pre PHP frameworky.. jednak odbacaju od samotneho PHP cize clovek sa nema ako naucit to prave, a jednak si cez ne prave ze tam je ta bezpecnost nemoze urobit clovek bezpecnost samu. OK ludia to mozu kombinovat so svojim PHP, ale takcitak ak nieje clovek autor toho frameworku nemoze dopodrobna vediet ako funguje (moze kuknut source to hej :D, ale ajtak) a tym zaroven aj znizit bezpecnost :D.. + vacsina z nich je OOP co u PHP neodporucam :-) akoze ok, OOP proste jazyk ktory je OOP je pokrocilyy a pre vacsinu aj OOP PHP, ale nevidim dovod preco si jazyk ako PHP komplikovat OOP a o prehladnost to moc nezlepsuje, hlavne zaciatocnikom ..
(teraz ma urcite poslete niekam aby som si precital ako OOP PHP funguje, a ze ake je bezpecnejsie nez klasicke :D)
napr. u JS je framework perfektna vec.. ale u PHP no neviem neviem :)..
to iste OOP pri C++ a niektorych ostatnych, no pri PHP, zbytocnost podla mna :)
2yaqwsx: odporucam ti kupit si urcite nejaku z knih o PHP od cpress .. ebooks urcite nie..
- je to len moj subjektivny nazor, nechcem vyvolat nejaky flame... proste OOP PHP a PHP Frameworky nemusim .
a jednak mi niektore z nich pripadaju zaciatocnikom velmi komplikovane a zbytocne sa ich ucit, este sa im to zmiesa ked sa ucia zaroven aj PHP ..
mozno ma uplne zkritizujete co som to za tupca ze takto hovorim o OOP PHP a PHP frameworkoch, a ze pouzivam tu "starinu" klasicke PHP, ale proste ja mam na toto takyto nazor.. OOP pri PHP je zbytocnost a frameworky jedine svoj.. mozno niekedy usetria pracu ale nie az ovela aby som ich pouzival ( pri PHP )
To Lordest : kámo si moj clovek... s tebou by som si ruku urcite podal...presne moje slova... tak isto nemusim ziadne frameworky a ani cudesne OOP (teda len pri PHP)....
lepsie sa fakt naucit surove PHP, nebudes nicim obmedzovany..., a ak pritom pouzijes rozum na 100 percent... (myslim to tak ze dany problem vyriesis co najlogickejsie a zaroven co najmenej zrave vykon) budes mat vykonnejsie aplikosky ako s framworkami... bleeee
+ je surove PHP lepsie prenositelne napr. v ramci roznych zamestnani....
yaqwsx
Občas bych potřeboval však potřeboval napsat nějakou webovou aplikaci. Jaké zdroje by jste mi doporučili na PHP a související věci (databáze), abych mohl v co nejkratším čase něco napsat?
Ono není moc zdrojů (jakékoli kvality), které by mapovaly většinou jen jemné rozdíly mezi dvěma imperativními jazyky -- něco vhodného pro přechod (snad jen krom dynamických jazyků běžících pod JVM, které tu jsou ,,aby nahradily ukecanou Javu`` :-)). Na tu syntaxi bude asi nejlepší si pročíst již odkazované php.net, konkrétně kapitolu Language Reference[1] -- jako základ to stačí a ostatní člověk pochytí při programování.
Nejvíce srandy může být s porovnávacími operátory (== a ===). Dvě rovnítka před porovnávání přetypovávají, tři ne a pokud jsou hodnoty nalevo a napravo různých typů, vrací FALSE. Osvědčilo se mi všude používat === a používat explicitní přetypovávání.
Pak bych pokračoval s funkcemi pro práci s řetězci[2] a poli[3], protože s jejich zpracováním se člověk setkává nejvíce.
Jako relační databázi asi budeš chtít používat MySQL (kvůli její rozšířenosti). Začal bych seriálem na linuxsoftu[4] a v PHP používal rovnou nějaký wrapper -- PDO[5], dibi[6]. Hrát si s MySQL/MySQLi extenzemi mi přijde jako ztráta času. Pokud nechceš relační databázi (a abych si na svoje práce udělal reklamu :-)), tak můžeš zkusit metatable[7], btree[8], nebo CouchDB[9,10,11] společně s couchdb-php[12]. No, a pokud to chceš opravdu hardcore, tak tu jsou funkce pro práci s filesystémem[13].
[1] http://www.php.net/manual/en/langref.php
[2] http://php.net/manual/en/ref.strings.php
[3] http://php.net/manual/en/ref.array.php
[4] http://www.linuxsoft.cz/article_list.php?id_kategory=232
[5] http://php.net/pdo
[6] http://dibiphp.com/
[7] http://github.com/jakubkulhan/metatable
[8] http://github.com/jakubkulhan/btree
[9] http://zdrojak.root.cz/clanky/couchdb-tak-trochu-jina-databaze-1-cast/
[10] http://zdrojak.root.cz/clanky/couchdb-tak-trochu-jina-databaze-2-cast/
[11] http://zdrojak.root.cz/clanky/couchdb-tak-trochu-jina-databaze-3-cast/
[12] http://github.com/jakubkulhan/couchdb-php
[13] http://php.net/manual/en/ref.filesystem.php
Ten kdo protestuje proti používání OOP v PHP zřejmě se ho nikdy pořádně nenaučil. Bez něj se dnes nedá obejít, podívejte se na php projekty. ty které nejsou v oop na to akorát doplácejí. Ve firmě si nedokážu představit, že bychom náš projekt neměli v OOP. A tento projekt opravdu není klikátko pro firmu xy která potřebuje vlastní web. To tedy k OOP.
K frameworku. Opět, ten, kdo dělá profesionální webové aplikace, by něco takového nikdy nevypustil z úst. Framework != MVC, framework != OOP, ale framework se = rozhraní, které mi ulehčí všemožné operace, které bych programoval každý den 100x. Ať už v otázkách bezpečnosti, tak už prostě kvůli tomu, že prostě nemám potřebu vymýšlet znovu kolo. Buď použije člověk to, co je k dispozici (a je to velmi kvalitní, Nette apod.), nebo si to napíšu sám a využívám to potom napříč projekty. Bohužel, nebude to dosahovat tolik kvalit, jako ostatní projekty, výhoda bude v tom, že je to prostě vaše a víte, co a jak tam je, jak to jde. Já sem si proto naspal vlastní framework, a můžu říct, že po 2 letech vývoje je to opravdu kvalitní dílko. (http://haefko.skrasek.com)
Framework / knihovny klidně vlastní, ale je je třeba. Jen blbec by pořád rozkopírovával už svůj naprogramovaný kód do ostatních projektů.
hrach napsal: .... [smazáno pro přehlednost]
ja predsa neprotestujem proti OOP v PHP :).. nech si kazdy pouziva co chce.. ja len tvrdim ze je to zbytocne(v PHP!).. ked clovek kodi sam? naco mu to je vediet co patri pod co, ked projekt robi sam a vie co robil... Suhlasim, urcite sprehladnuje co sa tyka kodu, ale nevidim moc rozdiely co sa tyka inych veci .. v klasik PHPcku kodim celkom dlho a nikdy som na to nedoplatil .. vo firme hm no ok mozno to pomaha, ale naco to davat pod triedy ked mozem pouzit komentare :D nehovorim ako nejaky skuseny vystudovany programator, mozno mas pravdu a ja sa mylim ze o nom mam nepravdivy prehlad, ale mne ako solo OOP nevyhovuje pretoze je to v PHP podla mna zbytocne.
a budem velmi rad ak ma niekto presvedci o opaku :P.. rad sa zdokonalujem.. ale zatial nevidim dovod.
hej sorry :D, pisal som narychlo cize som do postu s frameworkami zaplietol aj knihovnu ( s tym sourcom v zatvorke ), ale inak to iste knihovna / framework jedine vlastna.. nie kvoli tomu ze si ma clovek o sebe mysliet, ale kvoli tomu aby vedel on sam najlepsie ako funguje kedze ju vytvaral..
inak to tiez iba ztazuje sa zas nieco ucit.. proste pre mna je najlepsie otvorit editor a vsetko si kodit sam v "klasike"...
btw: myslim ze som videl u nejakych frameworkov aj rozlisny syntax..
ja OOP chapem, viem ho... ale lepsie sa mi robi "klasicky", proste kazda operacia ma vlastnu function ktora sa nacita len v pripade potreby.. ked chces da sa aj bez OOP.. a celkom efektne... a vonkoncom nie je ziadny problem nasledne kopirovat kusy kodu vo funkciach... to iste ako keby to bolo v OOP...
frameworky su mozno uzitocne, ale na moj vkus tazkopadne, pomale.. a nutia ma zase ucit sa nove "funkcie" a poradia premennych, dakujem, neprosim... da sa to aj inak...
Nechci tvrdit že bez frameworku to nejde. jen poukazuji, že má i výhody. Dále tvrdím, že investovaný čas se vrátí. Své vám o tom poví firmy, které frameworky používají, nebo mají interní vlastní. :) ohledne pomalosti frameworku, jak rika kolega: dnes je drazsi cas programatora, nez vykonejsi zelezo :)
k tomu oop - není to samospasitelné, ale je to prostě obrovský krok kupředu. například dědičnost. tu holt normálně nevyřešíš. potřeboval sem pro jednu činnost upravit chování a tak jsem jen oddědil třídu a tam kde rozhoduji, co se bude přesně dělat, pouze vytvořím správnou instanci. pokuď bych to dělal "normálně", pak bych na každém odlišném místě musel psát podmínku,jakou verzi funkce použít. na oop se nelze dívat jako uzavření funkcí do třídy. je třeba si uvědomit mimo té zapouzdřenosti i dědičnost a znovupoužitelnost. reakce na Lordesta: danou tridu spravuji ja, ale presto mi oop NESMIRNE pomohlo, ikdyz "si to kodim sam". Je nutno poznamenat, ze pred rokem, dvema, bych takovou tridu vubec nevypotil. Je to opravdu hardcore.
Tak když se tu rozhořela taková poloOT diskuse, taky se připojím :o)
OOP:
V začátcích jsem ho vůbec nepoužíval, neuměl používat, nevěděl, co to je. Pak jsem pronikl do jeho tajů a byl jsem zmlsaný, chodil po náměstích s bubínkem a roztruboval, jak je OOP super. Z tohoto pocitu jsem vystřízlivěl. Ale nezačal jsem opět dělat procedurálně. Proč? OOP je prostě jiný způsob myšlení a mně se líbí víc. Jak píše hrach, OOP != obalím funkce do tříd a hotovo. OOP je jen další abstrakce nad kódem – už člověk neuvažuje v blocích kódu, v algoritmech; ale ve vzájemné komunikaci a interakci celého systému. Jak kdosi kdesi napsal (už opravdu nevím kdo a kde), existují dobré a špatné abstrakce – tohle je podle mě zrovna jedna z těch dobrých.
Na druhou stranu, dříve jsem jako velkou výsadu OOP dával zapouzdřenost, znovupoužitelnost, dědičnost, polymorfismus a vůbec všechno, co najdete na Wikipedii a podobných severech :o) Tohle všechno se mi zdá ale spíše podružné (možná že to vyplývá právě z toho, co mi přijde hlavní). Objekty krásně využívají vlastnosti imperativních jazyků – stavovost. Už dávno o objektech neuvažuji jako o hodnotách. Ale jako o procesech – přesně ve stylu UNIXové filozofie, procesech, kdy každý umí jednu a právě jednu věc (a to pořádně) a spojováním právě těchto procesů (objektů) do složitějších celků (jako v UNIXu pomocí shellu) vznikají na správu jednoduché (a zapouzdřené a znovupoužitelné atp. :o)) a hezky napsané aplikace.
Nejspíše svůj názor (pohled na věc) zase za pár týdnů/měsíců/let přehodnotím. Ale v tomhle je podle mě právě ta krása – abstrakce nad samotným kódem.
Frameworky:
Všechno to handrkování kolem frameworků v PHP pramení z jedné věci – PHP nemá pořádný balíčkovací systém, či prostě způsob, jak se rychle dostat k nějakému kvalitnímu cizímu kódu. Možná vykřiknete: „[PÍR]!“ To je výsměch, jak píše hrach (opět :o)), zastaralé.
Důležité je si položit otázku, co je to vlastně framework? Moje definice: sada užitečných knihoven, co je ulehčují práci. Užitečné knihovny jsou v každém jazyku, framework k tomu přidává akorát to slovo „sada“. Ale k čemu tohle vede? Ve světě PHP programátorů k tomu, že je pořád nějaký kód opakován. Každý framework musí sám řešit zapouzdření session, přihodí tam nějakou Repository, samozřejmě routing atd. atp. Podle mě mrhání časem. Na druhou stranu – ono to jinak nejde! Vemte si, že pokud nějaký kus PHP kódu nenaleznete v nějakém frameworku, tak prakticky nemáte šanci ho nalézt vůbec. Kdyby třebas někdo odděleně vyvinul implementaci Lucene v PHP, myslíte, že byste ji objevili, kdyby nebyla v Zendu (mluvím o Zend_Search_Lucene)?
Třebas mně se ze Zendu líbí Zend_Search_Lucene, z Nette zase formuláře (s jinými frameworky jsem zatím vážněji nekoketoval, takže se jim omlouvám, pokud ony mají některé opravdu hezké části). Ale vysekávat všechno potřebné pro tyhle části z frameworků je blbé, složité (ve smyslu, že by to mohlo být jednodušší; ne, že by to bylo až tak složité, hlavně díky dobrému oddělení jednotlivých částí). Správně, řeknete mi, ať si stáhnu celý framework – moc zbytečností navíc. Nebo ještě lépe, ať si to udělám sám – jak jsem psal, mrhání časem!
Kolik programátorů v C++/Javě apod. napadne pro každou blbost reimplementovat knihovnu – hlavně aby věděli, jaké je to ve střevech. Ne, tohle může napadnout jenom PHP programátora (ano, samotného mě tyto choutky velice často popadají :o)).
Když se zavede nějaký pořádný balíčkovací systém, mají všichni vystaráno. Mně je jedno, jestli v aplikaci budu mít části z několika frameworků, několik dalších knihoven, a pár svých vlastních věcí – já prostě chci, aby se to psalo hezky, aby to bylo udržovatelné atd. Stejně tak firmy a všichni líní programátoři.
---
A tohle je dokázané! :o) http://binarniladin.sweb.cz/dukaz.htm
U mna to bolo podobne... len ma to hned aj opustilo... zrazu som zistil ze mam objekt, ktory v jednom subore extenduje druhy, ten zase treti, vznikaju na instancie, ten tamto vola... a za chvilu vznikne taky chaos ze az hlava rozboli... potom zistim ze v jednom projekte potrebujem zmenit volanie.. a voala... mozem zase prerabat, alebo ZASE extendovat...
dalej som zistil ze by som potreboval len jednu funkciu v objekte... aha musim si tam drbnut cely objekt... no diki..
dalsia vec je ta, ze kazdy rozumie proceduralu, podla mna sa da v nom rychlejsie vyznat ako objektoch, hlavne v tom pripade ked clovek chce hlbsie zmenit povahu a sposob vykonavania aplikacie...
Dobre nakodeny kod proceduralnym sposobom a OOP, moze byt rovnako rychlo upravovany a rovnako rychlo pochopeny 3. osobou... a tak isto sa daju robit aj MEGA projekty... ja osobne vidim dalsie plus a to rychlost aplikacie... ked programujem sam je mi u prdele ci usetrim 5 min. denne... (kedze mam vsekto co sa opakuje vo fc()) dolezitejsia je cena zeleza pre mna.... (nasledne aj konektivity za kazdy zdroj)
marioff
zrazu som zistil ze mam objekt, ktory v jednom subore extenduje druhy, ten zase treti, vznikaju na instancie, ten tamto vola…
Ano, přesně tohle je problém – lidem je vždy vštěpováno do hlavy, že OOP je hlavně (a někdy to vyzní, že i jen) o dědičnosti. Dědičnost je nevíce přeceňovaná vlastnost OOP[1], za tím si stojím. Možná to souvisí s tím, že většinou je používána na nesprávných místech[2].
dalej som zistil ze by som potreboval len jednu funkciu v objekte…
Pak ten objekt porušuje Single responsibility principle[3] – častá chyba; většinou to dělají lidé, co přecházejí z procedurálního programování, a tak obalí fce třídami a je to. Špatná implementace se nedá brát jako argument proti.
dalsia vec je ta, ze kazdy rozumie proceduralu
Spekulace. Někdo rozumí třebas jenom funkcionálnímu/deklarativnímu stylu ;o) Je to jen o tom, co se člověk naučí jako první. Pokud bys jako první pod nos dostal Haskell, bude ti procedurální (a vůbec imperativní) programování připadat jako blbost.
hlavne v tom pripade ked clovek chce hlbsie zmenit povahu a sposob vykonavania aplikacie…
To bych řekl právě naopak. Pokud je komunikace mezi objekty navržena správně, je mnohem jednodušší jeden objekt zaměnit za jiný (který bude reagovat na stejné zprávy), než přepisovat horu fcí.
Dobre nakodeny kod proceduralnym sposobom a OOP, moze byt rovnako rychlo upravovany a rovnako rychlo pochopeny 3. osobou…
Opět spekulace. Ale s tím bych i souhlasil. Nicméně to pak není argument proti OOP (jestli jsi tím chtěl proti němu argumentovat).
ja osobne vidim dalsie plus a to rychlost aplikacie… ked programujem sam je mi u prdele ci usetrim 5 min. denne…
Nemělo by být. Lidský čas je dost cenný na to, aby se jím plýtvalo.
---
Když člověk chce alespoň trochu objektivně hodnotit výhody, nebo nevýhody OOP oproti procedurálnímu programování, musí nejdříve pochopit, že každé je o něčem trochu jiném. Procedurální programování je o transformaci nějakého globálního stavu procedurami, abychom dosáhli požadovaného výsledku. Objekty si zase udržují každý svůj vlastní stav a interagují spolu => nemyslete o objektech jako o kontejnerech na procedury! Přirovnávat objekty k černým krabičkám, do kterých se něco dá a ze kterých něco vypadne je jejich degradace na úroveň právě kontejnerů na procedury. Vy tímhle vlastně jenom vezmete procedurální programování a rozdělíte globální stav na části a každá jednotka zpracuje jeho část. Tomuhle bych neříkal objektová orientace. Je to možná slovíčkaření, ale v OOP by nic jako globální stav (stejný pro všechny objekty) být ani nemusel.
Podle mě je jedním z dnešních nejlepších OOP jazyků Erlang. Největší sranda na tom je, že Erlang dostanete zaškatulkovaný jako konkurenční funkcionální jazyk[4] :o)
Ještě bych odcitoval Alana Kaye: „I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.“ („Vynalezl jsem termín objektově orientovaný a můžu vám říct, že jsem tím nemyslel C++.“) Stejné principy jako C++ používá Java a PHP.
[1] http://bukaj.netuje.cz/blog/dedicnost-je-nejvice-precenovana-vlastnost-oop
[2] http://twitter.com/jakubkulhan/status/4297348659
[3] http://en.wikipedia.org/wiki/Single_responsibility_principle
[4] http://en.wikipedia.org/wiki/Erlang_%28programming_language%29
To bukaj_001 : oka, aj tvoje "proti"argumenty maju daco do seba, aj ked aj ja sa budem neustale bit o svoj nazor... vznikne zbytocny flame..
jedine by som reagoval na spekulaciu ohladom porozumenia proceduralu a OOP. Ak niekto nerozumie proceduralu, nerozumie vobec PHP... preboha to si neviem ani predstavit ze niekto mi upravi nejaky objekt, a nebude to iste vediet upravit v klasike.. alebo len v nejakej samotnej funkcii... to fakt moze niekto taky existovat, sa mi nechce verit... ze sa to da :D :D
ja som davnejsie prerabal FPDF (kniznica na tvorbu PDF) na nativnu podporu UTF8, a poviem ti zi vacsie peklo som uz davno nezazil, aj ked sa mi to uspesne podarilo... dalo by sa to spravit aj pekne proceduralne... a podla mna aj efektnejsie..
To marioff : add FPDF: takových patlalů oop je spousta. je nutno rozlišit co je ok a co ne. to bych musel odsoudit celý procedutál, pač v tom patlá každej debil...
Díky za odpovědi.
To bukaj_001 : Díky za zdroje. K porovnání jazyků - C++ jsem uváděl proto, aby bylo jasné, že třeba takové OOP mi není cizí. Nechci materiály, které učí programovat, ale pouze jazyk (+ programování v něm).
To hrach : ano to je tiez pravda... trosku si narazil na inu temu ktora mi neuveritelne pije krv, a to su patlali... alebo ja ich nazivam lepiči... robia hambu nam co vedia procedural "povysit" na vyssiu uroven :) ... ked vidim tie kodi polepene z kadejakych zdrojov, chce sa mi grcat... ano to su debily..
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Hledáme PHP vývojáře se znalostí ZEND frameworku — založil ZdenekZicha
PHP a pochopení OOP — založil šnek
PHP OOP začátečník — založil th
Mé dotazy na OOP v PHP — založil polonium
Moderátoři diskuze