e anche secondo me ;-)Originariamente inviato da lloyd27
... A quel punto la Zend farà qualcosa, come ripensare il suo prodotto per ridargli un pò di appeal.. Questo ovviamente secondo me..
Nou
e anche secondo me ;-)Originariamente inviato da lloyd27
... A quel punto la Zend farà qualcosa, come ripensare il suo prodotto per ridargli un pò di appeal.. Questo ovviamente secondo me..
Nou
Io credo che un altro dei motivi è che l'80% delle persone che utilizzano PHP nel web neanche sanno cosa è una classe e cosa è un gestore degli errori o eccezioni e cose varie; quindi alla Zend preme davvero poco avere un linguaggio pulito e che segua una logica ben precisa.
Mentre riguardo al tuo problema ti consiglio di usare un qualcosa di un pelino più articolato, come minimo:
almeno sai che tipo di errore stai avendo. Però forse sarebbe bene scriverti una intera funzione per gestire gli errori e poi associarla con set_error_handler() in modo da darti informazioni dettagliate sul tipo di errore, dove si è verificato e cose simili.Codice PHP:
set_error_handler(
create_function('$errno, $errstr', 'throw new Exception($errstr);')
);
try {
$buggy = 5/0;
}
catch (Exception $e) {
echo $e->getMessage();
}
Administrator of NAMDesign.Net
si ci avevo pensato anch'io.Originariamente inviato da LeaderGL
Mentre riguardo al tuo problema ti consiglio di usare un qualcosa di un pelino più articolato ...
grazie
ovviamente io ho dato la nota, la possibilità di fare quanto richiesto, la sinfonia non sta a me farla, lavoro in JavaScript sopra C# figuriamoci cosa me ne importa di PHPOriginariamente inviato da LeaderGL
... riguardo al tuo problema ti consiglio di usare un qualcosa di un pelino più articolato ...
Oggi come oggi PHP lo vedo come: esiste un modo alternativo, procedurale o non, che mi permeta di ottenere il risultato sperato?
- si, lunga vita al PHP, chissene se non è nativo il throw nel core
- no, porca zozza sono degli idioti
Per quello che ho cercato di fare nell'ultimo anno mi sono ritrovato sempre nel secondo caso, quindi non vi lamentate quando c'è una via d'uscita, bestemmiate con me quando nemmeno la più strampalata estensione vi permette di fare cose logiche e normali per ogni altro linguaggio serio![]()
Per concludere, l'ideale è estendere la Exception, risettando le protected interne tramite le info inviate dall'error handler al fine di ottenere il risultato desiderato e in modo più controllato
se volete vi posto un codice di esempio, così mi testo la proto del prossimo PAMPACodice PHP:
try { whatever }
catch(PHPException $e){
// la mia eccezione dall'error handler
}
catch(Exception $e){
// eccezione generica inviata da vattelapesca
}
a volte te la tiri un po' pero' eh?Originariamente inviato da andr3a
lavoro in JavaScript sopra C# figuriamoci cosa me ne importa di PHP![]()
l'ultima volta che mi volevano sopra C# gli ho detto che piuttosto andavo a tirar su patate nel kent
Nou
so sborone che ci vuoi fareOriginariamente inviato da nourdine
a volte te la tiri un po' pero' eh?![]()
almeno non hai di questi problemiOriginariamente inviato da nourdine
l'ultima volta che mi volevano sopra C# gli ho detto che piuttosto andavo a tirar su patate nel kent![]()
![]()
aggiornamento ...
alla fine ho messo in pratica il codice qui discusso. Ecco cosa ho scritto
se prova a creare volontariamente un errore (tipo passo un id che non esiste) mi becco questo errore:Codice PHP:
// validation against DTD using DOM extension
function validate($f) {
$dtd = "xml/mtDTD.dtd";
$dom = new DOMDocument;
$dom->Load($f);
return ($dom->validate()) ? true : false;
}
set_error_handler(create_function('', 'throw new Exception("errore php");'));
try {
// create the resource URL
$file = "xml/" . $_GET["id"] . ".xml";
// print a shitload of errors if the xml file is not DTD compliant
validate($file);
// load DOM tree with simpleXML
$doc = simplexml_load_file($file);
// set to encoding to utf-8
header('Content-type: text/html; charset=utf-8');
}
catch (Exception $e) {
echo $e->getMessage();
}
mentre io mi aspettavo solo:codice:errore php Fatal error: Uncaught exception 'Exception' with message 'errore php' in C:\apache\htdocs\www\test\page.php(11) : runtime-created function:1 Stack trace: #0 C:\apache\htdocs\www\test\page.php(36): __lambda_func(8, 'Undefined varia...', 'C:\apache\htdoc...', 36, Array) #1 {main} thrown in C:\apache\htdocs\www\test\page.php(11) : runtime-created function on line 1
forse perche il try solleva piu di una eccezzione? booooh!codice:errore php
grazie