Visualizzazione risultati 1 fino 7 di 7

Discussione: Spiegazione di una classe.

  1. #1
    Guest

    Question Spiegazione di una classe.

    Ciao a tutti ragazzi, oggi vi chiedo la cortesia di una spiegazione. Già, vorrei capire per filo e per segno come questa classe funziona. Io so usarla, so cosa fà, so come editarla ( anche se in minima parte ) ma ci sono delle stringhe che non capisco. Quindi vorrei qualcosa tipo: $codice // Spiegazione

    Ecco la classe:
    Codice PHP:
    class Users {

    protected
    $fetch = array();

    public function
    __get($key) {
    $r = NULL;

    if(
    array_key_exists($key, $this->fetch))
    $r = $this->fetch[$key];

    return
    $r;
    }

    public function
    __isset($key) {
    return isset(
    $this->fetch[$key]);
    }

    public function
    __construct($id, $db) {
    $query = "SELECT * FROM users WHERE id = " . (int) $id;
    $results = $db->query($query);
    $this->fetch = $results ? $results->fetch_assoc() : array();
    }

    }
    In breve, mi basta dargli l'id e la variabile del DB per poter accedere a tutte le info di un user. E' una classe davvero utile. Infatti mi basta scrivere $user->email oppure $user->surname per avere accesso ai dati.
    Ora però voglio capire cosa fà, cosa chiede il php al database. Voglio capire il funzionamento, non usarla e basta!

  2. #2
    Guest

    Predefinito

    Ciao ci provo.

    Dunque,
    innanzi tutto la classe ha una sola proprietà fetch dichiarata protected, per cui sarà inaccessibile dall'esterno, ed ecco il perchè dell'uso dei magic method (__get, __isset, ...).
    Questa proprietà è dichiarata come array e conterrà i dati prelevati dal DB.

    Una volta instanziata la classe viene richiamato il metodo __construct che interroga il DB e, se ha risultati, restituisce un array creato con le coppie chiave/valore restituiti dalla query.

    Quindi quando tu chiedi $user->email non fai altro che richiamare __get('email') che restituisce il relativo valore.

  3. #3
    Guest

    Predefinito

    Ok a livello teorico già è più chiaro ora. =)
    Potrei avere maggiori dettagli su questa parte? Intendo riga per riga xD ( grazie della pazienza )

    Codice PHP:
    if(array_key_exists($key, $this->fetch))
    $r = $this->fetch[$key];

    return
    $r;
    }

    public function
    __isset($key) {
    return isset(
    $this->fetch[$key]);
    }

  4. #4
    Guest

    Predefinito

    Quando richiedi un medoto alla classe User (tipo $user->email) richiami il magic method __get passandogli come parametro 'email', quindi nel caso della mail __get('email').

    Prima della if interessata viene impostata la variabile $r al valore NULL.

    Dopo, se la chiave ricercata (email nell'esempio) esiste nell'array delle coppie chiave/valore fetch (array_key_exist serve proprio a verificare se una chiave esiste in unn array), imposta la variabile $r al valore relativo alla chiave (indirizzo email), e quindi restituisce il valore di $r che sarà NULL nel caso la chiave non esistesse, il valore cercato nel caso contrario.

  5. #5
    Guest

    Predefinito

    E per quanto riguarda questo?
    Codice PHP:
    $this->fetch = $results ? $results->fetch_assoc() : array();

  6. #6
    Guest

    Predefinito

    Puoi dare un'occhiata a come funziona l'operatore ternario.

    Per fartela breve breve quella riga va interpretata su per giù così:

    assegna a $fetch l'array ricavato da $result se $result è valido altrimenti uguaglialo ad un array vuoto.

  7. #7
    Guest

    Predefinito

    Capisco, bene ora è più chiaro. Così come è chiaro che devo studiare di più.
    Grazie mille vplaza, gentile e paziente!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •