php关于类的继承问题,关于PHP类继承的问题

我现在自己编写了一个两个继承关系的类,父类实例化后子类不知道怎么调用父类已经实例后存储的变量

先把代码粘在下面:

Class Identification{//Identification函数将name与code联系起来public function Identification(){//连接到InfoModel$DB_Info = M('Info');$condition->Name = $this->name;return $this->code = $DB_Info->where($condition)->getfield('Code');}public $name;protected $code;}Class PT_Info extends Identification{public function get_BloodTest(){$DB_BloodTest = M('Bloodtest');$condition->Code = $this->code;echo "This is Code:".$this->code;$this->Info_BT_WBC = $DB_BloodTest->where($condition)->getfield('WBC');echo "This is WBC:".$this->Info_BT_WBC;$this->Info_BT_NEPer = $DB_BloodTest->where($condition)->getfield('NEPer');echo "This is NE%:".$this->Info_BT_NEPer;$this->Info_BT_LYPer = $DB_BloodTest->where($condition)->getfield('LY%');echo "This is LY%:".$this->Info_BT_LYPer;$this->Info_BT_MOPer = $DB_BloodTest->where($condition)->getfield('MO%');echo "This is MO%:".$this->Info_BT_MOPer;}public $Info_BT_WBC;public $Info_BT_NEPer;public $Info_BT_LYPer;public $Info_BT_MOPer;}public function tclass(){$neal = new Identification();$neal->name = 'Neal';$code = $neal->Identification();$this->assign('name',$neal->name);$this->assign('code',$code);$neal_BT = new PT_Info();$neal_BT->get_BloodTest();$this->assign('Info_BT_WBC',$neal_BT->Info_BT_WBC);$this->assign('Info_BT_NEPer',$neal_BT->Info_BT_NEPer);$this->assign('Info_BT_LYPer',$neal_BT->Info_BT_LYPer);$this->assign('Info_BT_MOPer',$neal_BT->Info_BT_MOPer);$this->display();}

如上面代码:我把Identification类实例化为neal后存储了一个变量$code,之后实例化其子类PT_Info为neal_BT,此时需要调用已经存储在neal中的$code变量值(详见PT_Info类里的函数用法)

我不想在PT_Info类里面再单独存一个$code变量,想借用继承关系,毕竟往后还有很多类似的结构,那样写的话整体会很乱

话句话说我先在实例化的子类要调用一个实例化的父类里的变量,这两个类在定义是有继承关系,可是实例化后我不知道怎么告诉编译器这两个类(neal和neal_BT)之间存在继承关系

注:我整个项目使用ThinkPHP框架写的,所以有的函数(比如‘M’方法)并非PHP默认的写法

跪求大神帮忙解答!!!

回复讨论(解决方案)

你的概念出问题了

Class PT_Info extends Identification 后

PT_Info 和 Identification 就是两个独立的类了,虽然 PT_Info 继承了 Identification 一些东西

这就和 你 不是 你父亲 是一个道理

Class Identification

{

public function Identification()

你在 Identification 定义了 Identification 方法,这就是构造函数了(据说 php7 取消了这个 C++ 来的特征)

那么,你在实例化 PT_Info 时,这个 Identification 方法就会自动被执行 code 属性就已经有值了

注意:构造函数是没有返回值的(写了也没用)

因此 tclass 方法中的 $neal = new Identification(); 是没有意义的

后面还有 $neal_BT = new PT_Info();

就是说 $DB_Info->where($condition)->getfield('Code'); 被执行了两次,多了一次无用功

你的概念出问题了

Class PT_Info extends Identification 后

PT_Info 和 Identification 就是两个独立的类了,虽然 PT_Info 继承了 Identification 一些东西

这就和 你 不是 你父亲 是一个道理

Class Identification

{

public function Identification()

你在 Identification 定义了 Identification 方法,这就是构造函数了(据说 php7 取消了这个 C++ 来的特征)

那么,你在实例化 PT_Info 时,这个 Identification 方法就会自动被执行 code 属性就已经有值了

注意:构造函数是没有返回值的(写了也没用)

因此 tclass 方法中的 $neal = new Identification(); 是没有意义的

后面还有 $neal_BT = new PT_Info();

就是说 $DB_Info->where($condition)->getfield('Code'); 被执行了两次,多了一次无用功

太感谢啦!!的确是我自己理解上的问题,您这个解释太及时了多谢多谢!!!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值