我现在自己编写了一个两个继承关系的类,父类实例化后子类不知道怎么调用父类已经实例后存储的变量
先把代码粘在下面:
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默认的写法
跪求大神帮忙解答!!!
立即学习“PHP免费学习笔记(深入)”;
2010-10-31日最新更正: 一、更正了产品及文章无限分类不能显示继承类别的bug. 二、更正了产品名称标题过长导致页面布局错位的bug. 随缘企业网站管理系统(无限级分类红色版)简介: 一、全站采用主流DIV+CSS框架布局,宽屏红灰主色调,简洁大方。适合各类行业作为企业站使用。 二、后台可对相关的网站标题,关键词,描述、底部版权信息等进行设置,同时可指定相关的安装目录,可在二级目录使用。
立即学习“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'); 被执行了两次,多了一次无用功
太感谢啦!!的确是我自己理解上的问题,您这个解释太及时了多谢多谢!!!










