Občas trochu nechápu logiku vývojářů PHP, ne že by to byl zcela špatný jazyk, leč někdy mi připadá navržen jako když „kočička s pejskem pekli dort“.
Jeden ze základních problémů vnímám v nejednotnosti API, několik funkcí ze stejné skupiny má několik způsobů uspořádání vstupních parametrů a někdy je nutná konzultace s dokumentací.
Co mě irituje poslední dny je předávání polí z HTML formuláře. Když přidám i pole pro soubory, bude nelogické uspořádání dimenzí pole markantní. (Upozorňuji, že stále píši v HTML4, jelikož jsem XHTML neuznal jako životaschopnou normu a současný vývoj mi dal víceméně za pravdu.)
Zdrojový kód formuláře:
<form action="" enctype="multipart/form-data" method="post">
<p><em>Pole1:</em> <input name="txt[1]" type="text" /></p>
<p><em>Pole2:</em> <input name="txt[engl]" type="text" /></p>
<p><em>Soubor1:</em> <input name="soub[1]" type="text" /></p>
<p><em>Soubor2:</em> <input name="soub[1]" type="text" /></p>
<input type="submit" value="Odes*at" />
</form>
Pokud chci zpracovat data z textových polí $_POST, najdu je zcela logicky na pozicích jméno vstupu a klíč pole (nejen číselný, lze použít i text), neboli $_POST['txt'][1]
a $_POST['txt']['engl']
. Ale pokud chci ze superglobálního pole $_FILES zpracovat soubory stejným způsobem (tj. ověřit zda nenastala chyba, zkopírovat, …) narazíte na menší nelogičnost v uspořádání dimenzí.
Standardně bych očekával, že k jednotlivým údajům se dostanu sekvencí $_FILES[nazev][klic][udaj]
, kde nazev je moje pojmenování inputu z formuláře, klic je klíč pole; mnou zvolený index; a udaj je vlastnost, jíž potřebuji (z množiny name
, tmp_name
, size
, error
a type
). Odpovídalo by to logice přístupu k nesouborovým hodnotám $_POSTu.
Avšak přístup k hodnotám je malinko přeházený, jako programátor dovedu pochopit rozhodnutí, jež k tomu vedlo. Správná sekvence jednotlivých indexů je $_FILES[nazev][udaj][klic]
, přičemž jednotlivé indexy jsou popsány v předchozím odstavci.
Zkušení programátoři pochopitelně znají, já už jsem se soubory v poli dlouho nepracoval, takže jsem na přeházenou indexaci zcela zapoměl.
Napsat komentář