Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    negare l'output a una mia funzione

    Ciao a tutti,

    Sto elaborando un sito e sto usando delle funzioni personali.
    In pratica ho scritto alcune classi che servono a gestire un DB.
    Una di queste funzioni, normalmente, se viene usata su una tabella vuota visualizza sullo schermo dei messaggi di warning (che ho scritto io) che segnalano appunto che la tabella è vuota.
    In fase di costruzione la cosa mi è tornata molto utile, ma se volessi evitare di far uscire i warning senza modificare la funzione?

    Io so che mettendo "@" prima di una funzione standard di php l'output eventuale viene negato, posso utilizzare lo stesso sistema? Se si che procedure devo seguire?

    HELP PLEASE
    :-D PHP inside :-D

  2. #2
    L'unico modo sensato di procedere e' modificare la funzione. Se i messaggi devono essere stampati solo in alcuni casi, allora aggiungi tramite parametro una variabile che controlli quando e' il caso di stampare e quando no e che setti quando chiami la funzione.

    Funzione:
    Codice PHP:
    function foo(<eventuali altri argomenti>, $debug FALSE) {
        
    // codice
        
    if ( $debug ) {
            
    // stampa messaggi
        
    }
        
    // codice

    Utilizzo:
    Codice PHP:
    foo(<eventuali altri argomenti>); // non stampa niente
    foo(<eventuali altri argomenti>, TRUE); // stampa messaggi 

  3. #3

    Grazie

    Si effettivamente è la cosa più sensata, quella della @ mi sembrava tanto una figata che speravo di poterla sfruttare. Peccato.
    :-D PHP inside :-D

  4. #4
    La soppressione degli errori tramite @ e' una tecnica altamente abusata e spesso indice di cattiva progettazione. Eliminare gli errori cosi' e' come accendere il ventilatore per togliere il fumo che viene dall'incendio in cucina. Gli errori vanno considerati e gestiti, far finta di niente sposta solo il problema piu' avanti quando peraltro il debug sara' complicato proprio perche' qualcosa non funzionera' ma non mostrera' alcun errore che potrebbe aiutare nella soluzione.

  5. #5

    Il punto è che non è realmente un errore

    E' una notifica che uso in fase di debugging, ma che non voglio avere poi sul sito.
    Se un DB ha una tabella vuota non è un errore, quindi non ha senso segnalarlo, se però sto creando il sito, e sto lavorando con una tabella vuota la notifica mi torna utile.
    Io consideravo di lavorare normalmente con le notifiche delle mie funzioni per poi toglierle con @ al momento della normale esecuzione.
    Pensi che sia cmq un'abuso? :master:
    :-D PHP inside :-D

  6. #6
    Il mio era un discorso generale sull'uso di @. Nel tuo caso e' inapplicabile, perche' @ sopprime gli errori, non il normale output.

  7. #7
    Originariamente inviato da k.b
    L'unico modo sensato di procedere e' modificare la funzione. Se i messaggi devono essere stampati solo in alcuni casi, allora aggiungi tramite parametro una variabile che controlli quando e' il caso di stampare e quando no e che setti quando chiami la funzione.

    Funzione:
    Codice PHP:
    function foo(<eventuali altri argomenti>, $debug FALSE) {
        
    // codice
        
    if ( $debug ) {
            
    // stampa messaggi
        
    }
        
    // codice

    Utilizzo:
    Codice PHP:
    foo(<eventuali altri argomenti>); // non stampa niente
    foo(<eventuali altri argomenti>, TRUE); // stampa messaggi 
    E se domani vuole settare a OFF? deve andarsi a ricercare tutti i punti in cui ha richiamato una funzione?

  8. #8
    Con il find/replace si può fare in poco tempo , ma è più che palese lo spreco di tempo.
    Ho fatto come mi ha consigliato.
    :-D PHP inside :-D

  9. #9
    Originariamente inviato da n0t
    E se domani vuole settare a OFF? deve andarsi a ricercare tutti i punti in cui ha richiamato una funzione?
    Io suggerivo questo sistema SE si vuole la flessibilita' di usare la stessa funzione con o senza la stampa dei messaggi, altrimenti si lascia la chiamata uguale e si cambia la funzione, no? Questo mi sembrava talmente banale da non doverlo neanche menzionare.

    D'altra parte anche per usare la '@' dovresti scorrere ogni chiamata alla funzione, no?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.