Diskuze: Nové PHP tutoriály
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Vlastník
Zobrazeno 20 zpráv z 20.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
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?
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_intersect_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?
Ú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)
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.
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.
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š.
Do databáze to řeší PDO. Pro výstup máš pravdu, htmlspecialchars a htmlspecialchars_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.
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.
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.
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.
Co dělá funkce die()? 
Myslel jsem si, že se nachází jen ve špatných učebnicích.
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.
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(...)).
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ě?
Výjimky jsem v PHP zatím nepoužíval, jestli se toho chceš chopit, budu
jen rád 
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.
Zobrazeno 20 zpráv z 20.
