IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:4.9.2012 15:21

Po krátké odbočce k návrhovým vzorům a UML se zaměřuji na sekci PHP :)

Jak v tutoriálech píše Mircosoft, v PHP je to kolikrát jen o tom najít tu správnou funkci. Také víme, že PHP je slušně řečeno velmi špatně navržené a ve funkcích se moc lidí nevyzná (já také ne).

Abych přešel k věci, říkal jsem si, že bychom si tu udělali takovou debatu o těch funkcích, které stojí za zmínění. Dohodli bychom se na tématických okruzích (článcích) a funkcích, které do nich patří. Články bych následně vytvořil a přidal do nich ukázky použití daných funkcí. Vytvořili bychom encyklopedii koncentrovanou těmi správnými a důležitými funkcemi. A nemuselo by jít jen o funkce, ale i o syntactic sugar např. ohledně řetězců, polí atd.

Funkcí je hodně, list dle kategorií: http://www.php.net/…/funcref.php
List všech: http://php.net/quickref.php

Jako tématické okruhy mě napadají:
Textové řetězce
Pole (asi ještě nějak rozdělit na podkategorie)
Přenos dat mezi skripty (GET, POST, REQUEST, Cookie, Session)
Textové soubory
XML (to již tu je vlastně od Kita)
Objekty (má smysl vysvětlovat funkce jako funkce, ne metody?)
Datum a čas

Budeme to dělat jen objektově nebo i pro začátečníky? Např. práci s datem a časem, je tam hezká třída DateTime, ale jde to i bez ní.

Děkuji za názory, námitky, návrhy funkcí a další příspěvky :)

Odpovědět
4.9.2012 15:21
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:4.9.2012 15:31

Začnu se stringy (http://www.php.net/….strings.php):

Za zmínku IMHO stojí: echo, explode, printf? (rozdíl mezi fprintf?), implode, trim, md5, ord, parse_str, sha1, str_replace, (ty not utf-8 safe bych zde vůbec nezmiňoval, protože jsou k ničemu), mb_strlen, mb_strpos, mb_substr, strtr.

Co vy na to?

Nahoru Odpovědět
4.9.2012 15:31
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:4.9.2012 15:40

K řetězcům bych přidal rozdíl mezi uvozovkami a apostrofy, dále vkládání proměnných do řetězců.

Funkce k polím (ty jsou díky bohu označené prefixem array): array_fill, array_flip, array_intersec­t_key, array_intersect, (array_key_exists mi připadá zbytečný, když lze použít isset), array_keys, array_map, array_merge, array_pop, array_push, array_replace (úplně nevím co to dělá), array_reverse, array_search, array_shift, array_sum, array_unique, array_unshift, array_values, count, extract, ksort, sort, usort.

Jak to vidíte?

Nahoru Odpovědět
4.9.2012 15:40
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na David Hartinger
David Hartinger:4.9.2012 15:46

Úplně mi vypadly databáze, opět otázka objektů, budeme učit jen PDO nebo i funkcionální MySQLi? (vím, že je i objektová, ale proti PDO to nemá význam)

Nahoru Odpovědět
4.9.2012 15:46
New kid back on the block with a R.I.P
Avatar
Drahomír Hanák:4.9.2012 16:04

Souhlasím, že nemá cenu uvádět ty not utf-8 safe funkce. Ony mají stejně podobné parametry. Zmínil bych se také o http://php.net/…ion.hash.php

Asi bych to rozdělil na základy (neobjektové) a pak to ostatní psal objektově, aby tomu rozuměli i začínající programátoři. Ohledně databází bych hodně prosazoval to PDO a o něčem jako je MySQLi bych se zmínil jen tak okrajově. Chce to začátečníky nabádat k těm dobrým postupům a ne je učit něco, co jim pak bude k ničemu. Pro datum a čas bych tedy popsal ten objekt DateTime.

 
Nahoru Odpovědět
4.9.2012 16:04
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Drahomír Hanák
David Hartinger:4.9.2012 16:08

Vidíš, ta hash vydá za md5 a sha1 a další. Ty tedy škrtám a přidávám hash.

Já právě nevím, když tu je ten neobjektový tutoriál od Mirka pro začátečníky, tak jestli nedělat pak již rovnou objekty s tím, že bych tu udělal step by step tutoriál na OOP v PHP, který by byl předpokladem.

Nahoru Odpovědět
4.9.2012 16:08
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Drahomír Hanák:4.9.2012 17:56

Tak to by bylo nejlepší :) Ještě mě teď napadá zmínit se o escapování řetězců (jak pro výstup tak pro zápis - třeba do databáze atd.), ale to už asi plánuješ.

 
Nahoru Odpovědět
4.9.2012 17:56
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Drahomír Hanák
David Hartinger:4.9.2012 18:07

Do databáze to řeší PDO. Pro výstup máš pravdu, htmlspecialchars a htmlspecialchar­s_decode jsem přehlédl, přidávám. Možná i ty entities, ale to ničí diakritiku, nevím, jestli je to užitečná funkce.

Nahoru Odpovědět
4.9.2012 18:07
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:4.9.2012 19:47

V XSLT se htmlspecialchars() nepoužívá, protože už je obsaženo a funguje kontextově. Uvnitř tagů escapuje jinak než v atributech. To také přidám do některého z dalších článků o šablonách.

Nahoru Odpovědět
4.9.2012 19:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
sdraco
Neregistrovaný
Avatar
Odpovídá na Kit
sdraco:4.9.2012 19:59

A ten vycet funkci ti prijde v poradku?

 
Nahoru Odpovědět
4.9.2012 19:59
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:4.9.2012 20:05

Ještě jsem ten seznam funkcí pořádně nepročetl, vyjádřím se později.

Těch užitečných i méně užitečných funkcí je moc. Dokonce jsem našel i fungující třídu na vytváření excelovských tabulek, ale nebudu to tady říkat moc nahlas, aby to náhodou někdo nezačal používat místo databáze.

Nahoru Odpovědět
4.9.2012 20:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:5.9.2012 11:19

Funkce pro práce s řetězci bych rozdělil do 2 článků (Výpis a Manipulace). K výpisu bych ještě přidal var_dump a printr, byl by tam i speciachars.

Pole bych rozdělil na Operace s polem a operace s více poli.

Pokud nikdo nic nenamítá, dnes se do toho pustím.

Nahoru Odpovědět
5.9.2012 11:19
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na David Hartinger
David Hartinger:5.9.2012 11:33

K výpisu bych mohl dát i die.

Nahoru Odpovědět
5.9.2012 11:33
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:5.9.2012 11:45

Co dělá funkce die()? ;)

Myslel jsem si, že se nachází jen ve špatných učebnicích.

Nahoru Odpovědět
5.9.2012 11:45
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 Kit
David Hartinger:5.9.2012 11:57

Často ji používám pro diagnostické účely.

Nahoru Odpovědět
5.9.2012 11:57
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:5.9.2012 12:45

Aha. Mně by vadilo, že by se někdy i citlivé údaje zobrazily návštěvníkovi. Raději loguji a to i během řádného provozu a návštěvníkovi sdělím jen nezbytné minimum informací.

Teď mě napadá, že bych mohl zkusit die() nějak odchytit a zalogovat.

Nahoru Odpovědět
5.9.2012 12:45
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 Kit
David Hartinger:5.9.2012 13:37

Co je nasazeno na produkčním serveru, tak tam die nemá co dělat, o tom žádná. Ale na localu ji používám velmi často, když něco nefunguje, dá se tím docela hezky "krokovat" a zjitit, kde je to rozbité. Nejčastě tam mám něco jako die(var_dump(...)).

Nahoru Odpovědět
5.9.2012 13:37
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:5.9.2012 13:45

Tak to je OK. Vybavila se mi zajímavá funkce, která v seznamu chybí: assert().

Také mi trochu chybí pojednání o výjimkách. Nebo to chceš nechat na mně?

Nahoru Odpovědět
5.9.2012 13:45
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 Kit
David Hartinger:5.9.2012 14:22

Výjimky jsem v PHP zatím nepoužíval, jestli se toho chceš chopit, budu jen rád :)

Nahoru Odpovědět
5.9.2012 14:22
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:5.9.2012 20:53

OK, v PHP udělám výjimku. V Pythonu ani se jiné ošetření chyb nepoužívá. Kéž by to tak fungovalo i v PHP.

Nahoru Odpovědět
5.9.2012 20:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 20 zpráv z 20.