Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
David Čápka:

Ú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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Drahomír Hanák:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Drahomír Hanák:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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:

A ten vycet funkci ti prijde v poradku?

 
Nahoru Odpovědět 4.9.2012 19:59
Avatar
Kit
Redaktor
Avatar
Odpovídá na sdraco
Kit:

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 Čápka
Tým ITnetwork
Avatar
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
David Čápka:

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

Nahoru Odpovědět 5.9.2012 11:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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

Nahoru Odpovědět 5.9.2012 11:57
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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.