如何从父类访问子类变量

短跑

我有以下类继承的情况:

class Entity
{
  public $db; //connection

  ...
}

和类客户产品扩展实体类:

class Customer extends Entity
{
   public $cname;
   public $cdesc;

   private function populate($row)
   {
     foreach($row as $key=>$val) $this->$key=$val;
   }

   public function fetch()
   {
     $sql="SELECT cname,cdesc FROM customers";
     $rst=$this->db->query($sql);
     $row=$rst->fetch_assoc();
     $this->populate($row);
   }
}

class Product extends Entity
{
   public $pname;
   public $pdesc;

   private function populate($row)
   {
     foreach($row as $key=>$val) $this->$key=$val;
   }

   public function fetch()
   {
     $sql="SELECT pname,pdesc FROM products";
     $rst=$this->db->query($sql);
     $row=$rst->fetch_assoc();
     $this->populate($row);
   }
}

从这里可以看到,每个子类都具有相同的函数populate($ row),该函数从子类中获取数据库行并填充相应类的变量;此函数自动填充变量:$ this-> cname = $ row ['cdesc'],$ this-> cdesc = $ row ['cdesc']等。(在此处查看我的其他文章)。

现在,我想将此功能从子级拉到父类Entity并由所有子级继承,但是有一个问题。$ this-> $ key = $ val的此函数动态填充(尝试填充)父类变量,而我想填充子类变量。如何定义此函数填充子类变量?(我想在这里使用类似于child :: $ key = $ val的方法,但是child ::不存在)。

史蒂夫

也许我缺少了一些东西,但是您可以使该函数受保护,然后在子类中对其进行访问:

class Entity
{
    protected  $db; //connection

    protected  function populate($row)
    {
        foreach($row as $key=>$val) $this->$key=$val;
    }
}


class Customer extends Entity
{
    public $cname;
    public $cdesc;

    public function fetch()
    {
        $sql="SELECT cname,cdesc FROM customers";
        $rst=$this->db->query($sql);
        $row=$rst->fetch_assoc();
        $this->populate($row);
    }
}

class Product extends Entity
{
    public $pname;
    public $pdesc;

    public function fetch()
    {
        $sql="SELECT pname,pdesc FROM products";
        $rst=$this->db->query($sql);
        $row=$rst->fetch_assoc();
        $this->populate($row);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从父类访问子类变量

来自分类Dev

如何从父类访问变量

来自分类Dev

从父类访问子类原型

来自分类Dev

如何从父类访问子变量?

来自分类Dev

如何从父类获取子类中变量的值

来自分类Dev

是否可以从父类访问子类的属性?

来自分类Dev

如何通过非泛型的子类从父类正确访问泛型方法?

来自分类Dev

如何将所有类变量从父*实例*传递给子类?

来自分类Dev

如何使用超类的实例访问子类的覆盖变量

来自分类Dev

如何从超类的方法访问(屏蔽)子类中的成员变量?

来自分类Dev

如何使用超类的实例访问子类的覆盖变量

来自分类Dev

Ruby:从父类访问调用子类的常量吗?

来自分类Dev

在流口水中从父类访问子类属性

来自分类Dev

Python父类访问子类的类变量

来自分类Dev

从父类继承的子类中的函数使用那个变量?

来自分类Dev

如何从父类访问私有字段

来自分类Dev

如何从父类访问子组件的状态

来自分类Dev

在父类中访问子类变量

来自分类Dev

如何使继承从父类到子类python34工作

来自分类Dev

我如何从父类到达子类?(在Java中)

来自分类Dev

如何使变量可被其他类访问而无需子类化?

来自分类Dev

如何访问子类中的变量而不在getter的父类中对其进行初始化

来自分类Dev

如何决定从父类或子类中调用子类中的重写方法?

来自分类Dev

如何访问子类中的父类方法

来自分类Dev

从父类中的静态方法访问子类中定义的属性-javascript

来自分类Dev

如何从子类修改超类变量?

来自分类Dev

子类对象如何访问父类的私有变量,就像java中一样,除了类本身可以访问私有变量之外,否?

来自分类Dev

防止从子类访问实例变量,而不会影响基类

来自分类Dev

无法通过子类实例从自己的类访问私有变量

Related 相关文章

  1. 1

    如何从父类访问子类变量

  2. 2

    如何从父类访问变量

  3. 3

    从父类访问子类原型

  4. 4

    如何从父类访问子变量?

  5. 5

    如何从父类获取子类中变量的值

  6. 6

    是否可以从父类访问子类的属性?

  7. 7

    如何通过非泛型的子类从父类正确访问泛型方法?

  8. 8

    如何将所有类变量从父*实例*传递给子类?

  9. 9

    如何使用超类的实例访问子类的覆盖变量

  10. 10

    如何从超类的方法访问(屏蔽)子类中的成员变量?

  11. 11

    如何使用超类的实例访问子类的覆盖变量

  12. 12

    Ruby:从父类访问调用子类的常量吗?

  13. 13

    在流口水中从父类访问子类属性

  14. 14

    Python父类访问子类的类变量

  15. 15

    从父类继承的子类中的函数使用那个变量?

  16. 16

    如何从父类访问私有字段

  17. 17

    如何从父类访问子组件的状态

  18. 18

    在父类中访问子类变量

  19. 19

    如何使继承从父类到子类python34工作

  20. 20

    我如何从父类到达子类?(在Java中)

  21. 21

    如何使变量可被其他类访问而无需子类化?

  22. 22

    如何访问子类中的变量而不在getter的父类中对其进行初始化

  23. 23

    如何决定从父类或子类中调用子类中的重写方法?

  24. 24

    如何访问子类中的父类方法

  25. 25

    从父类中的静态方法访问子类中定义的属性-javascript

  26. 26

    如何从子类修改超类变量?

  27. 27

    子类对象如何访问父类的私有变量,就像java中一样,除了类本身可以访问私有变量之外,否?

  28. 28

    防止从子类访问实例变量,而不会影响基类

  29. 29

    无法通过子类实例从自己的类访问私有变量

热门标签

归档