Sto facendo un piccolo browser di file per i compiti a casa - e lo faccio funzionare come ho bisogno, ma sono un po 'confuso nel gestire gli scenari di errore in PHP ora che sto cercando di ridefinire la mia codifica.Devo provare/prendere su opendir in PHP a causa di E_WARNING?
Sono abituato a C++/C# try/catch gestione degli errori, che PHP sembra avere qualche variante di. Ciò che mi confonde è questa:
risorsa opendir (string $ path [, resource $ contesto])
Restituisce una risorsa handle della directory in caso di successo, o FALSE in caso di fallimento.
Se percorso non è una directory valida o la directory non può essere aperto a causa di restrizioni sui permessi o errori del filesystem, opendir() restituisce FALSE e genera un errore PHP di livello E_WARNING. È possibile sopprimere l'output di errore di opendir() anteponendo '@' alla parte anteriore del nome della funzione .
da http://php.net/manual/en/function.opendir.php.
Devo rilevare l'errore PHP generato del livello E_WARNING menzionato qui o è ridicolo? Non capisco perché restituirebbe false e genererebbe un errore - l'errore non dovrebbe essere generato in modo che tu non ritorni normalmente?
Questo è un esempio dell'incoerenza intrinseca di PHP, che è sicuramente un * linguaggio * di scripting *. Non catturerai avvertimenti con try ... catch. Le eccezioni e gli errori/avvertenze fanno parte di due meccanismi diversi e le eccezioni sono state aggiunte in seguito. È un bel casino. Sii ** molto ** attento a scrivere cose in PHP: le lingue di cui sei esperto (C++/C#) sono coerenti, PHP no. Attento. – gd1
Stai attento a usare '@' per gestire gli errori ". Questo sopprimerà tutti gli errori, non solo gli avvertimenti. Vedere l'avviso sul manuale PHP: http://www.php.net/manual/en/language.operators.errorcontrol.php –
Sapevo che stava succedendo qualcosa di divertente. Il primo sito che ho letto su questo argomento ha chiamato E_WARNING un'eccezione che mi ha confuso. Grazie per l'heads up ragazzi. –