Já a PHP
Školení, která pořádám
Jako spousta programátorů jsem začínal u Pascalu, ze kterého jsem plynule přešel na Delphi. Vyzkoušel jsem i několik dalších jazyků, ze kterých mě nejvíce oslovil jazyk C. Pak přišel web a já hledal cestu, jak vytvářet skripty pohodlněji než v Unix Shellu přes CGI a kamarád mě upozornil na PHP. Nechtělo se mi učit nový jazyk, ale onen kamarád mi řekl: „Piš to jako v C, před proměnné dej dolar a PHP kód uzavři do <?php ?>
“. Tak jsem to zkusil a ejhle – ono to šlo. U PHP jsem už zůstal a vypěstoval jsem si k němu hluboký vztah, ze kterého vzešlo mimo jiné:
Na českém webu jsem hledal weblog o PHP a kromě několika zkrachovalých projektů (např. phpBlog) jsem v podstatě nic nenašel. Proto jsem se rozhodl, že si budu psát blog vlastní. Inspirace mám doufám dost, jen teď mám v šuplíku témata na půl roku při dvou článcích týdně. Nicméně pokud by vás nějaké konkrétní téma zajímalo, tak mi prosím napište nebo přispějte do diskuse k tomuto článku. Článků pro začátečníky je všude spousta (např. seriál na Intervalu, na PC Světu nebo na Živě.cz), můj blog bude proto pro mírně pokročilé. Spíše než na vysvětlování jednotlivých postupů se pokusím popisovat, jak v PHP programovat elegantně a bez zbytečných chyb.
Diskuse
pmasarik:
Teším sa na príspevky, s PHP síce ešte len začínam, ale o tom, ako programovať elegantne si rád niečo prečítam.
Nie je až také ťažké niečo urobiť, ale ako to urobiť
elegantne to je horšie.
Sám som doteraz urobil len script na odchytenie počasia so správy METAR a nemám žiadneho známeho čo by to prezrel a poprípade by mi povedal, že takto nie a takto áno.
Ak by bol záujem skúsenejších, prezrieť daný script tak tu je link
http://pmasarik.info/blog/index.php?p=24 Peter
Xificurk:
Skvělé, na něco podobného jsem dlouho čekal. Určitě bych uvítal článek o regulárních výrazech a jejich různých aplikací... díky
Jakub Vrána :
Seriál o regulárních výrazech v PHP právě vychází na Intervalu: http://interval.cz/serial.asp?serial=218. Bohužel jsem ho nečetl, tak nemohu posoudit kvalitu. Nicméně myslím, že k tomu taky budu mít co napsat (ale nečekejte úvod do problematiky), takže díky za námět.
Vít Dlouhý:
Skvělé, těším se, že se tu něco naučím. Přeji dlouhou výdrž :-)
Jakub Vrána :
Podle data prvního příspěvku soudím, že to je plichta, ale jinak konkurenci vítám!
K8:
Já bych přivítal něco o postgre a php, teď jsem s tím prvně přišel do styku a trochu mě překvapilo, že když si z db načtu hodnotu ze sloupce typu boolean, tak tato promenna neobsahuje hodnoty true / false , jak jsem očekával, ale textovou hodnotu "t" nebo "f", takže se nedá přímo použít v podmínce if ($posilat) , ale musí se dělat třeba if ($posilat == 't') a na
http://php.hjc.edu.sg/manual/fr/ref.pgsql.php jsem se dočetl, že :
't' or 'f' is valid boolean expression for PostgreSQL.
All values from PostgreSQL are strings, since PostgreSQL integer, float may be much larger than PHP's native int, double can handle. PostgreSQL array is not supported.
tedy, že všechny i číselné hodnoty se předávají jako stringy (sice je to poznámka z roku 2002, ale podle toho typu boolean je možné, že se nic nezměnilo)
Krispin:
Ja bych zase uvital, jak spravne a elegantne pouzivat OOP v PHP tak, aby to praci opravdu setrilo a ne pridelavalo a aby to melo nejaky smysl. (mam na mysli stale jeste verzi 4, mozna se zabrousenim do 5ky, ale 4ka je jeste porad aktualni)
Jakub Vrána :
Díky za námět, mám to již nějakou dobu jako téma v šuplíku.
Petr:
Mám dotaz k práci s vícerozměrnými polemi.
Definuji si třeba 4 rozměrné pole obsahující různé obecné řetězce, nejen čistýtext. Chěl bych toto pole zapsat do tabulky v MySql. Domnívám se, že přímo to nelze, pouze jako řetězec.
Lze převést toto pole na řetězec a zpět přímo bez ztráty a zapsat do MySql?
D1ce:
Tuším, že hledáte fce serialize() a unserialize().
RD:
Nějaký podrobný návod na OOP a jeho praktické ukázky by pomohly, jiank super nápad chválím!
AXJ s.r.o. Jirmásek:
Dobrý den,
prosím Vás, měli bychom zájem o naprogramování kódu pro realitní
portál, pomocí kterého bychom chtěli zajistit prodej a koupi
realit. Například něco jako je
http://www.realexpres.cz.
Je možné se na Vás obrátit a získat informace ohledně
ceny atd ... ?
Děkujeme AXJ s.r.o.
Jirmásek Jindřich
www.axj.cz 777 006 606
Jakub Vrána :
Já jsem momentálně vytížen, ale zkuste odkaz v pravém sloupci na portál Na volné noze.
Karel:
Jak je možne že ma někdo zajem o nco tak nepovedeneho jako je www,realexpres.cz stači se podívat na www.toplist.cz a zjistit si navštěvnost
Jirka:
Měl bych námět na článek, který by určitě zaujal spoustu lidí. Jednalo by se o možnosti vyhledávání na webu pomocí php (kdy texty stránek nejsou v databázi).
Andy:
Nechtel byste napsat článek o php template? Konkrétně jak efektivně vyřešit cykly...? Nahrazování proměných je hračka :)
Andy:
tím php template jsem myslel = php šablony ;) jsem si řekl k čemu mi je nějaký smarty, když podporuje spoustu funkcí co já vůbec nevyužiju ;) mě by prstě stačilo nejlépe jen proměnné, cykly a includy... a ještě, abych věděl jak to funguje :) takže jsem si začal dělat vlastní šablonový systém, ale zadrhnul jsem se u cyklů, kde potřebuju vypsat třeba <li>pole[1]</li><li>pole[2]</li>... tak se mi všechny způsoby co mě napadly nebo jsem viděl u menších template systémů strašně zbytečně kostrbatý... tak že by jste to mohl detalněji rozebrat...:) Protože na čaských ani anglických serverech jsem o tom nic moc nenašel.. :)
PS: Když už píšu tak musím tyto stránky pochválit ;) Člověk tu najde spoustu zajímavých věcí ;)
Jakub Vrána :
Spíše než vlastní šablonovací systém bych doporučil použít nějaký již existující. Pokud nevyhovuje nějaký složitý jako je Smarty, existují i jednodušší jako HTMLtmpl.
K HTMLtmpl jsem si udělal verzi, která šablonu přeloží do PHP kódu, který se následně normálně zpracuje. Tam se cyklus řeší jednoduchou záměnou <TMPL_LOOP var> za <?php foreach ($vars["var"] as $row) { ?> (zjednodušeně řečeno), pak je samozřejmě nutné ještě proměnné uvnitř cyklu vypisovat jako $row["prom"] a ne jako $vars["prom"].
Andy:
to je zajímavé... prosím vás nemohl bych do vaší verze nahlédnout? :p
Jakub Vrána :
Pošli mi mail a já ti to pošlu. Ještě to není zralé na veřejné vystavení, ale třeba časem bude.
@ss@ssIn:
Ja nejak moc na aAnglictinu nie som (resp. este ju tak neovladam) a ked som ti chcel poslat mail, my prisiel na spet nejaky confirm a som z toho kkt...
Jakub Vrána :
Vím, že nějaké takové potvrzení chodí, bohužel neznám jeho přesné znění. Zkus tam kliknout na nějaký odkaz (pokud tam je) nebo na zprávu odpovědět.
@ss@ssIn:
Ak ti nepride sprava od "ghostwik@gmail.com" tak mam problem :/
@ss@ssIn:
Co takto clanok o zvyraznovani syntaxe?
(napr. php syntaxe )
HitmanPB:
Dnes som dostal od kamoša linku na túto stránku.
Som rád, že je tu konečne web o php, ktorý je živý.
Som úplný začiatočník a tak vítam každý zdroj.
Inak ma php uchvátilo z toho istého dôvodu ako aj autora webu.
Programoval som totiž v Clipper-i (niečo v Delphi) a teší ma, že tu nemusí človek otrocky deklarovať premenné :)
Doteraz som pouzival nNieco = cislo, cNieco = string,
aNieco = pole atď, a teraz je to to isté, akurát pridám $
($nNieco = cislo, atď..) a na konci riadku ';'.
Samozrejme rozdielov je viac, ale dá sa to pochopiť.
Držím palce celému projektu a verím, že tu najdem odpovede na moje otázky (a tých bude viac než dosť - som úplny LAMA v php)
Andy:
Nechtěl byste napsat nějaký článek o návrhu větších aplikací v php5-oop/sql/templates..?
Všude návody jak vytvořit Hallo world a jiné primitivní scripty, ale jak správně navrhnout velký systém nemohu najít...
Chtěl bych navrhnout "redakční systém" i s wysiwyg editorem pro lidi, kteří neumí programovat, aby v něm šel kompletně udělat web bez znalosti xhtml/css/php... a byl snadno rozšířitelný pluginy, vícejazyčný aj.
Prostě nechci dělat něco jednorázovýho, ale použitelnýho, rozšiřitelnýho... jenže nevím jak začít a ani nemůžu najít nějaký obdobný systém volně ke stažení kde bych se mohl inspirovat...
Neporadíte alespoň kde se inspirovat?
Andy:
Ještě byste případně mohl napsat článek o zpracování chyb (vyjímkách, logování aj.).. prostě konkrétní příklad jak to ve větším systému řešit ;)
@ss@ssIn:
Mne by sa hodil clanok:
Jak na OpenSSL - rad by som si doma spravil funkcny certifikat (v buducnosti sa tomu chcem venovat (robit webprogrammera + admina) a nejak som sa zasek) - na instalaciu sa vykasli, skvor ako spravit vlastny certifikat a sprovoznit ho - aby to bolo
https://xxx.xxx.xxx.xxx
vojto:
Tak som sa "pregooglil" az sem aj ja.Zacinam s php a vacsina clankov je este pre mna nezrozumitelna,som este lama:).Ale mam na vas prosbu.Neviem ako mam ulozit do databazy obrazok.Uz sa s tym babrem vyse tyzdna.Formular mam,skript zapisuje do databazy vsetky prvky az na obrazok.A na nete som zatial nic na to nenasiel:(.Ak by chcel niekto poradit, prosim: motorovy@yahoo.com
vojto:
:) tak to konecne mam.asi napisem niekam clanok pre dalsie lamy:)).inak fakt blbu chybu som tam mal,heh.
@ss@ssIn:
Hry s bitmi :)) Pekny a uzitocny namet...
&|^ :))
Juro Hajdúch:
P. Vrána, teraz sa trápim s automatickým generovaním RSS phpéčkom, nie je to až také zložité, ale vy by ste k tomu určite mali čo povedať. To ako námet na príspevok.
rob:
rad bych si vytvoril taky takovou diskuzi ale nevim jak nikde sem nenasel navod poradis ? BUK20@seznam.cz
Arnold:
Vaše stránky považuji za nejlepší český web o PHP. Díky!
Petr:
Zdravím, zajímalo by mě jestli jde v php zjistit u funkce kdo jí volá (je-li to funkce, metoda objektu, ...) Příp je-li to objekt tak získat na něj referenci. Díky
Jakub Vrána :
Tuto informaci poskytuje funkce debug_backtrace. Aktuální objekt metody vrací proměnná $this.
~:
Dobry den,
jelikoz Vas povazuji za jednoho z tech, kteri maji s programovanim v PHP nadprumerne zkusenosti, rad bych se Vas timto dotazal z jakych zdroju psanych v anglictine pro velmi pokrocile PHP programatory byste doporucil cerpat?
Zaujaly mne predevsim metody, jako je dependency fix ci writing maintenable code, velmi bych ocenil radu, kde mam hledat podobne kvalitni postupy pro programovani rozsahlych webovych aplikaci.
Dekuji za feedback a pragmaticky pristup, Frantisek R.
Jakub Vrána :
Já čtu spíš technicky zaměřené zdroje, teorii moc nesleduji.
~:
Doporucil byste mi tedy nejaky technicky zamereny zdroj s tematem PHP, ktery povazujete za kvalitni? Pravidelne sleduji Vase stranky, php.net, obcas dgx.cz ci error404 a dale prevazuje uz pouze google a nekolik PDF ebooku z ebay.
Martin Kolesar:
Dobry den, predem se omlouvam za tento "spam", nicmene shanime stredne sikovneho az sikovneho programatora PHP/MySQL na hlavni pracovni pomer. Pokud by se zde nasel nekdo, kdo by mel zajem spolupracovat na zajimavych www projektech, tak budu moc rad.
Napiste mi prosim na kolesar@webstart.cz
Nebo volejte na 736 630 070
Spolecnost CZ WEBSTART, s.r.o.
marii:
Ahojky prosím vás nemohl byste mi někdo na email marinka.r@seznam.cz napsat php kod pro foto dne na webovou stránku..?tak aby se fotka na každý den v týdnu měnila automaticky, když je vložím do nějaké složky..prosím moc, děkuji
Michal:
MySMS.cz uz nefunguje
Jakub Vrána :
Je to tak, alespoň jsem změnil odkaz na zakonzervovanou verzi.
Dominik Burger:
dobrý den je mi 12 let a programuji magickou školu mowen.chtěl bych poradit prosímvás jak naprogramovat aby si registrovaní uživatelé mohli psát mezi sebou tkzv. virtuální pošta.prosím poradíte mi?děkuji dominik
Franta:
Ahoj,
jedna věc mi vrtá hlavou :-)
Proč URL na tomto webu končí .php? Jedná se skutečně o soubory na disku (v tomto případě ja-a-php.php), nebo je to výsledek přepisování URL a ty obsahy článků jsou v databázi?
Franta
Jakub Vrána :
Je to výsledek přepisu a články jsou v databázi. Koncovku jsem zvolil proto, že mi pro weblog o PHP přišla příhodná.
Jakub Vrána :
Nasadil jsem novou reCAPTCHU, snad to pomůže.
Diskuse je zrušena z důvodu spamu.