作者gpmm (银色)
看板PHP
标题Re: [请益] 转换回传物件
时间Fri Jan 11 12:33:24 2013
※ 引述《kenit (充实自己实现梦想)》之铭言:
: 我有三个class
: A,B,BB
: BB继承B
: 然後A里面有一个method getB() 会回传一个B的instance
: 也就是
: class A{
: private $b;
: public function __construct(){
: $this->b= new B();
: }
: public function getB(){
: return $this->b;
: }
: }
: 假设$a = new A();
: 请问我可以将 $a->getB()回传的物件
: 转换成BB的物件吗?
: 我异想天开的试过$bb= (BB) $a->getB();
: 但语法错误
: 请各位先进指导指导 甘温~
呃,我试着简化一下你的问题,
你的意思是,如果
class BB extends from B
能不能将实体化的 object B,转型成 object BB?
这个嘛…在物件导向里(先撇开是不是 PHP),
一种物件实际上没办法无痕转为另一种物件,
你可以透过 interface 来让两个物件具有共同的存取介面,
也就是在特定情况下,这两个实体物件可以算是具有相同能力,
或着由继承得来,两个物件(有血缘关系的)也应该会有具有相同能力,
那麽在特定情况下,两者依然可以被视为同一种存取,
(也就是 upcasting / downcasting)
但实际上这都不是真正的把 B 变成 BB,
毕竟是两种不同的规格,在没有一个完整对应规范的情况下,应该是无法做到这点,
如果你有这种真正的转型需求,
我能想到的只有写函式来手动转了 :P
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.180.111.33
※ 编辑: gpmm 来自: 175.180.111.33 (01/11 12:34)