Home > Article > Backend Development > 关于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(); }
你的概念出问题了
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'); 被执行了两次,多了一次无用功