Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    Rilevato errore...dopo exit() ?!

    Ciao raga, buongiorno a tutti voi.

    Scusate ma questa non l'ho capita: ho il tipico (credo) file config.php che imposta lingua di voci di menu, root, bla bla bla e poi verifica il tutto con un paio di switch statement.

    La questione è questa, mi rileva errore "T_SWITCH" sulla linea (n) ..DOPO la dichiarazione di un echo/exit posta all'inizio della pagina config.php , PRIMA della linea rilevata come errore dal browser (parser).

    Perchè!?




    Thanks a lot.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762


    Risolto.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Però visto che ci siamo sollevo una questione. L'errore in questo caso riguardava un .. ..punto e virgola mancato nella dichiarazione di una variabile presente nel file. Invece l'echo con l'exit si trovava all'inizio del file, in questo modo:

    Codice PHP:
    <?php
    # File config.php, inizio file..

    echo "ciao";
    exit();

    # ..
    # ..

    $var 'non chiusa'

    # ..
    # ..
    ?>
    In questo modo riportava un errore. Ma allora mi chiedo: il parser php, prima di "parsare" il file php, "parsa" PRIMA l'intero file per vedere se ci sono errori (come è accaduto)..e SOLO DOPO LA VERIFICA inizia a gestire gli output e il resto?

    Mi sà di si. Non lo sapevo. Non ne sono certo.

    Attendo riscontri.

  4. #4
    Ciao,

    Probabilmente pensi che PHP sia solo interpretato e quindi il tuo stupore è del tutto sensato.

    Però era così solo fino al PHP3. A partire da PHP4, lo script viene compilato in bytecode e poi viene passato allo ZendEngine che lo interpreta.

    Quindi sul codice che hai scritto avvengono i seguenti controlli:
    1. analisi lessicale
    2. analisi sintattica
    3. viene generato il bytecode
    4. ZendEngine interpreta ed esegue il bytecode

    Quindi è normale che gli errori saltino fuori tutti al momento dell'analisi sintattica..


    se ti interessa approfondire queste slides sono magistrali!
    http://www.slideshare.net/sebastian_...iler-internals

    bytez
    PH

  5. #5
    Ho parlato di questi argomenti nel mio blog:
    I type error di php

    Provo a spiegartelo sinteticamente qui.

    Quello descritto è un errore di sintassi che genera un PARSE ERROR (unexpected...).

    Questa tipologia di errori sono sollevati durante la lettura del codice da parte del parse php del server (compile-time) tale che questo è considerato non intepretabile e, conseguentemente, non eseguibile.
    Nessuna delle istruzioni presenti sono eseguite (aldilà di un exit presente nel codice) e viene mostrato, quindi, a video l'errore.

    Se invece di un PARSE ERROR vi fosse stato un altra tipologia di errore (ad esempio un FATAL ERROR) il quale viene rilevato durante l'esecuzione del file dal server (run-time), cioè quando vengono eseguite una per una le diversi istruzioni, con l'exit posto prima della riga incriminata avrebbe impedito l'esecuzione di questa e quindi la rilevazione dell'errore.

    Esempio:
    Codice PHP:
    <?php  
    echo 'Prima istruzione'// istruzione eseguita  
    $var not_exists_function(); // fatal error  (Call to undefined function...)
    echo 'terza istruzione'// istruzione che non sarà eseguita  
    ?>
    Ma se metti l'exit non vi sarà alcun errore
    Codice PHP:
    <?php  
    echo 'Prima istruzione'// istruzione eseguita  
    exit; // interrompiamo l'esecuzione delle istruzioni successive
    $var not_exists_function(); // fatal error  
    echo 'terza istruzione'// istruzione che non sarà eseguita  
    ?>
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Ghiotto di questo tipo di discussioni

    Grandi phil e oly. Confesso che non mi sono mai soffermato ad analizzare le questioni riguardanti gli errori di PHP, del loro come, quando e perchè.

    "compilato in bytecode"
    "analisi lessicale"
    "analisi sintattica"

    ..direi che inizio da qui

    Grazie siete BIG!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.