Qual è lo scopo di restituire $ this in PHP

5
function select($select = '*')
    {
        if( is_string($select) ) {
            $select = explode(',', $select) ;
        }

        foreach($select as $s) {
            $s = trim($s) ;

            if($s != '') {
                $this->aSelect[] = $s ;
            }
        }

        return $this ;
    }

In PHP, cosa si intende per return $this .

    
posta Mehdy Mahmood 26.08.2012 - 08:35
fonte

2 risposte

14

Ci sono molti scenari in cui si potrebbe voler restituire $this da una funzione, ma il più popolare è "concatenamento di metodi".

Ad esempio, in un livello di astrazione SQL, potresti avere un oggetto che rappresenta una query, quindi chiamare una serie di metodi su di esso per estenderlo. Considera il seguente codice:

$query = $database->select();
$query->from('users');
$query->whereEquals('username', $username);
$query->orderBy('username');
$query->limit(1);
$user = $query->executeSingleRow();

Se ognuno dei metodi di $query restituisce l'oggetto query modificato, possiamo invece scrivere come:

$user = $database
            ->select()
            ->from('users')
            ->whereEquals('username', $username)
            ->orderBy('username')
            ->limit(1)
            ->executeSingleRow();

La seconda versione è più vicina a come scrivere una query SQL effettiva e funziona senza introdurre la variabile exta $query .

    
risposta data 26.08.2012 - 09:01
fonte
3

Restituendo $ this this rende più facile per il programmatore concatenare i comandi. Considera un oggetto auto. Puoi dire $ car- > start () - > forward () - > left () - > forward () on line se restituisci $ this in ogni funzione.

In realtà c'è una domanda su questo in overflow dello stack che potrebbe aiutare a chiarire quale metodo è il concatenamento: link

    
risposta data 26.08.2012 - 09:00
fonte

Leggi altre domande sui tag