2 つの継承関係を持つクラスを作成しました。親クラスがインスタンス化された後、子クラスは、親クラスがインスタンス化された後に保存された変数を呼び出す方法を知りません。
まず、以下のコードを貼り付けます。
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(); }
概念に何か問題があります
クラス PT_Info が Identification を拡張した後
PT_Info と Identification は 2 つの独立したクラスですが、PT_Info は Identification からいくつかのものを継承します
これは、あなたがあなたの父親ではないのと同じです
Class Identification
{
public function Identification()
Identification でコンストラクターである Identification メソッドを定義しました (php7 がこの機能を C++ からキャンセルしたと言われています)
次に、 PT_Info をインスタンス化すると、この Identification メソッドが自動的に実行され、コード属性にはすでに値が設定されています
注: コンストラクターには戻り値がありません (記述しても無駄です)
したがって、tclass メソッド $neal = new Identification(); は意味がありません
に続く $neal_BT = new PT_Info();
は $DB_Info->where($condition)->getfield('Code') を 2 回実行します。さらに無駄な努力
あなたの概念に何か問題があります
クラス PT_Info は Identification を拡張します
PT_Info と Identification は 2 つの独立したクラスですが、PT_Info は Identification からいくつかのものを継承しています
これはあなたがあなたの父親ではないのと同じです
Class Identification
{
public function Identification()
Identification で Identification メソッドを定義しました。これがコンストラクタです (php7 にはあると言われています)この機能は C++ からキャンセルされました)
その後、PT_Info をインスタンス化すると、Identification メソッドが自動的に実行され、コード属性にはすでに値が設定されています
注: コンストラクターは戻り値がありません (戻り値はありません)。書いてください)
したがって、tclass メソッドの $neal = new Identification(); は意味がありません
$neal_BT = new PT_Info(); もあります
つまり、$DB_Info-> ;where($condition)->getfield('Code'); は 2 回実行されますが、これはまた無駄な作業です