0
私は、次のような状況があります:私は(実行)と(解析されたオブジェクトなど)Orderオブジェクトを取得するには、このコードを使用するとPHPのtypehinting
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;
}
}
が、私はをこの書き込み:
$order = new Order();
$result = $order->get()->execute();
$result->id; /// typehint not works, cuz $result is type of Main, not more concrete type Order
だから私の質問です - ベース(抽象クラス、インタフェース)メソッドへのクラス実装の種類を渡すためにどのような方法は、作成の美しいtypehintを取得するために、それは、その基本クラスから呼び出されたがありますオブジェクト。私は自分のフィールドでMainクラスを拡張するUserを作成することができます。しかし、新しいUser() - > get() - > excute()を呼び出すと、同じ結果が得られます - メインのオブジェクト
'$結果 - > $ id'とにかく動作しません、最初のそれは' $ result-> id'だが、そのプロパティがプライベートであるので、それを直接アクセスすることはできません。 – Augwa
小道具が公共アクセス権を持っていると想像してください。$ result calls id prop。それは問題の主なアイデアではない –
私は自分の投稿を編集しました、ありがとう –