Restituzione dell'oggetto / $ questo [duplicato]

2

Una domanda molto generale. Stavo pensando al concatenamento dei metodi, che sembra utile, e ho iniziato a chiedermi se c'è un motivo per non restituire l'oggetto in un membro della classe, naturalmente.

Ad esempio:

function doStuffAndReturnThis() {
    /* Does Stuff */
    $this->variable = $stuff;
    return $this;
}

Suppongo che sia come uno di quegli argomenti contro il ritorno sempre vero / falso;

C'è un consenso? Inoltre, la mia lingua principale è PHP, ma questa non è una domanda specifica per PHP.

    
posta nobrandheroes 15.12.2014 - 22:57
fonte

1 risposta

2

Il concatenamento del metodo implica che più chiamate al metodo sono correlate, con ogni chiamata che costruisce sulla precedente. Un esempio è uno stile "fluente" di interrogare programmaticamente il database.

$posts = Post::where(array('name' => 'Test'))
    .order_by(array('date' => 'desc'))
    .limit(10);

(Perdona il mio fiacco PHP, è passato un bel po 'da quando ne ho scritto uno qualsiasi)

Il metodo della classe Post restituisce un oggetto QueryBuilder che ha un metodo order_by e un metodo limit, entrambi restituiscono l'oggetto QueryBuilder.

Vedrai questo linguaggio fluente e naturale come la sintassi quando un oggetto ha bisogno di una serie di configurazioni che è concettualmente più facile da gestire in linguaggio naturale, come le query SQL ad hoc.

Perché non restituire sempre l'oggetto per promuovere il concatenamento del metodo? Perché le persone potrebbero fare supposizioni sulle funzionalità della classe che non sono vere. Se una chiamata al metodo non richiede chiamate di metodo successive per raggiungere l'obiettivo finale, restituire l'oggetto potrebbe far pensare ai programmatori che la classe abbia bisogno di ulteriori chiamate quando non lo fa.

    
risposta data 16.12.2014 - 04:00
fonte