Ich habe folgende Situation:Php typehinting in aufgerufenen Methode des Objekts, in Basisklasse erstellt
class Main {
function get() {
return new Query();
}
}
class Order extends Main {
public $id;
public $name;
}
class Query {
/**
* @return Main
*/
function execute() {
/// some code here
return $parsedObject;
}
}
Wenn ich diesen Code verwenden, um execute() und Auftrag Objekte erhalten (wie analysiert Objekt), ich bin dieses Schreiben:
$order = new Order();
$result = $order->get()->execute();
$result->id; /// typehint not works, cuz $result is type of Main, not more concrete type Order
Also meine Frage ist - ist es eine Möglichkeit, eine Art Basis (abstrakte Klasse, Schnittstelle) Klasse Implementierung Methode zu übergeben, die sich von der Basisklasse aufgerufen wird, für immer schön typehint von erstellt Objekt. Cuz ich kann Benutzer, der Hauptklasse erweitert, mit seinen eigenen Feldern erstellen. Aber das Aufrufen von new User() -> get() -> excute() gibt mir das gleiche Ergebnis - ein Objekt vom Typ Main
'$ result -> $ id' ohnehin nicht funktionieren, ist es zuerst' $ result-> id' aber da diese Eigenschaft, die Sie nicht darauf zugreifen können direkt privat ist. – Augwa
Stellen Sie sich vor, dass Requisiten öffentlichen Zugriff haben, $ result Calls id prop. Das ist nicht die Hauptidee des Problems –
Ich habe meinen Beitrag bearbeitet, danke –