Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    Passaggio di parametri ad una classe e loro controllo

    Salve!
    Sto cercando un metodo per il controllo dei parametri passati ad una classe; la stessa è così realizzata:
    codice:
    class PDOOpen {
        function __construct($nomeDB = null) {
    		if ($nomeDB != null) {
                         qui il codice per aprire il database
                         return true;
                    } else return false;
        }
    }
    if ($obj = new PDOOpen()) echo 'Aperto!'; else echo 'Errore!';
    Ora, se lancio la classe nel modo esposto (cioè senza passare nessun parametro, o anche con una stringa vuota) non va in errore, e non capisco il perché.
    Mi date una mano?

  2. #2
    Codice PHP:
    class PDOOpen {
    var 
    $myDB;
        function 
    __construct($nomeDB null) {
            if (
    $nomeDB != null) {
                                
    //qui il codice per aprire il database
                         
    $this->myDB=TRUE;
                    } else 
    $this->myDB=FALSE;
        }
        function 
    getErr(){
            return (
    $this->myDB) ? TRUE FALSE;
        }
    }
    $obj = new PDOOpen();
    if (
    $obj->getErr()) echo 'Aperto!'; else echo 'Errore!'
    Prova così

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ci provo e ti faccio sapere, intanto grazie.

  4. #4
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Non ha senso perché sostanzialmente hai solo riscritto il mio codice senza risolvere il problema di fondo, ovvero: perché cacchio se scrivo un costrutto condizionale in cui chiedo di fare una certa cosa se una variabile ha un valore e un'altra se questo valore non c'è, perché cacchio questo non accade.
    Non ha senso perché l'ho provata e la risposta è sempre true, il che appunto non ha senso come non aveva senso nel codice che avevo scritto io.
    Non ha senso perché se tolgo il costrutto condizionale all'interno di __construct() e provo a chiamare la classe senza un parametro mi da errore, ma altrimenti non riesco a intercettare questo cacchio di errore.
    Potrei evitare di verificare la condizione di vero o falso e inserire tutto dentro un ciclo try/catch, sicuramente più elegante ma non ha senso che questa fesseria non funzioni

  5. #5
    Originariamente inviato da Marcolino's
    Non ha senso perché sostanzialmente hai solo riscritto il mio codice senza risolvere il problema di fondo, ovvero: perché cacchio se scrivo un costrutto condizionale in cui chiedo di fare una certa cosa se una variabile ha un valore e un'altra se questo valore non c'è, perché cacchio questo non accade.
    Non ha senso perché l'ho provata e la risposta è sempre true, il che appunto non ha senso come non aveva senso nel codice che avevo scritto io.
    Non ha senso perché se tolgo il costrutto condizionale all'interno di __construct() e provo a chiamare la classe senza un parametro mi da errore, ma altrimenti non riesco a intercettare questo cacchio di errore.
    Potrei evitare di verificare la condizione di vero o falso e inserire tutto dentro un ciclo try/catch, sicuramente più elegante ma non ha senso che questa fesseria non funzioni
    Il costrutto non restituisce nulla, quindi non ti può funzionare, come ti ho detto io funziona, basta che passi il valore al costrutto inquesto modo
    Codice PHP:
    class PDOOpen {
    var 
    $myDB;
        function 
    __construct($nomeDB null) {
            if (
    $nomeDB != null) {
                                
    //qui il codice per aprire il database
                         
    $this->myDB=TRUE;
                    } else 
    $this->myDB=FALSE;
        }
        function 
    getErr(){
            return (
    $this->myDB) ? TRUE FALSE;
        }
    }
    $obj = new PDOOpen();
    if (
    $obj->getErr()) echo 'Aperto!'; else echo 'Errore!';


    class 
    PDOOpen {
    var 
    $myDB;
        function 
    __construct($nomeDB null) {
            if (
    $nomeDB != null) {
                                
    //qui il codice per aprire il database
                         
    $this->myDB=TRUE;
                    } else 
    $this->myDB=FALSE;
        }
        function 
    getErr(){
            return (
    $this->myDB) ? TRUE FALSE;
        }
    }
    $obj = new PDOOpen('valore');
    if (
    $obj->getErr()) echo 'Aperto!'; else echo 'Errore!'

  6. #6
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    L'hai provato? Perché io l'ho provato e mi da sempre Aperto! come lo dava a me col mio sistema

  7. #7
    Probabilmente sarebbe più corretto che la tua classe lanci un eccezione se non può essere istanziata:

    Codice PHP:
    class PdoOpen {
      protected 
    $mydb null;

      public function 
    __construct($nomeDb null) {
         if ( 
    eregi("........."$nomeDb) ) {
         } else {
             throw new 
    Exception("DB Name parameter must be .....");
         }
      }
    }

    try {
       
    $pdoopen = new PdoOpen;
    } catch (
    Exception $e) {
       print 
    $e->getMessage();

    Administrator of NAMDesign.Net

  8. #8
    Originariamente inviato da Marcolino's
    L'hai provato? Perché io l'ho provato e mi da sempre Aperto! come lo dava a me col mio sistema
    si l'ho provato, e funziona. è ovvio che il codice che ti ho dato io sopra va su 2 file diversi, oppure utilizzi questo
    Codice PHP:
    class PDOOpen {
    var 
    $myDB;
        function 
    __construct($nomeDB null) {
            if (
    $nomeDB != null) {
                                
    //qui il codice per aprire il database
                         
    $this->myDB=TRUE;
                    } else 
    $this->myDB=FALSE;
        }
        function 
    getErr(){
            return (
    $this->myDB) ? TRUE FALSE;
        }
    }
    $obj = new PDOOpen();
    if (
    $obj->getErr()) echo 'Aperto!'; else echo 'Errore!';


    $obj = new PDOOpen('valore');
    if (
    $obj->getErr()) echo 'Aperto!'; else echo 'Errore!'
    a me da prima Errore! e poi Aperto!
    ma hai installato php5?

  9. #9
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    5.2.4 bo! sarà colpa di xammp

  10. #10
    Originariamente inviato da Marcolino's
    5.2.4 bo! sarà colpa di xammp
    Prova a fare il debug al'interno dei metodi, per i valori che arrivano alle proprietà

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.