Ich möchte eine Methode mit der Elternfunktion von sich selbst verketten.PHP-Kette mit Parent-Funktion
Beispiel:
class Query
{
protected $limit;
/**
* Returns some third object that isn't in this family.
* This object represents the results, and also has
* a first function that gets called in a chain.
*/
public function get()
{
// Do Stuff
return new /* ... */;
}
public function take($amount)
{
$this->limit = $amount;
return $this;
}
}
class ChildQuery extends Query
{
protected $singular = false;
public function get()
{
if($this->singular)
return $this->take(1)->parent::get()->first();
return parent::get()
}
public function singular()
{
$this->singular = true;
return $this;
}
}
Dies ist natürlich nicht der volle Satz von Funktionen, noch funktioniert, aber Sie bekommen die Idee. Ich möchte ChildQuery::get
in der Lage sein, Query::get
in einer Kette aufzurufen.
Gerade jetzt, ich habe dies zu tun:
public function get()
{
$this->take(1);
parent::get()->first();
}
, die nicht für mich ist ansprechend. Irgendwelche Ideen?
Ich führe PHP 7, wenn es darauf ankommt.
Mein Endergebnis würde wie folgt aussehen:
$query->singular()->get(); // ($query is a ChildQuery)
Das ist ein Mist. –
Auch verwende ich nicht immer Fluent APIs, aber es gibt Zeiten, in denen sie super bequem sind, wie Abfragen (sogar Ihre verwandten Artikel suggeriert dies). –