2012-04-12 4 views
0

親オブジェクトを子クラスとして、好ましくは親クラスのメソッドで簡単に再作成する方法はありますか?PHP OOP:親オブジェクトを子クラスとしてリキャスト

たとえば、「Visitor」クラスと「Visitor」を拡張する「Member」クラスがあります。認証メソッドが成功するとオブジェクトを再作成できますか?

おかげ

答えて

0

あなたは別のVisitorオブジェクトを取り、新しいオブジェクトにすべてのプロパティをコピーするVisitorクラスのコンストラクタを定義することができます。次に、このコンストラクタはMemberクラスに継承され、既存のVisitorオブジェクトをコピーしてMemberオブジェクトを作成することができます。

0

私が考えることができる最も近い解決策は、新しい「メンバ」オブジェクトを開始し、古いビジターオブジェクトをコンストラクタに渡すことです。コンストラクタでは、関連する属性を取り出して新しいオブジェクトに割り当てることができます。

同様のスキーマは、同じようにうまくいく可能性がありますが、あなたは直接PHPでクラスとして何かをキャストすることはできません。[

0

絶対にありません!ユーザーが認証されると、Visitorオブジェクトがもう存在しないように要求が終了します。次のリクエストで、Memberオブジェクトを直接ロードします(各ユーザータイプに関連するオブジェクトをインスタンス化することを知っているファクトリをいくつか持っていると仮定します)