Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP函数中未正确引用父类和子类_Php_Oop_Inheritance - Fatal编程技术网

在PHP函数中未正确引用父类和子类

在PHP函数中未正确引用父类和子类,php,oop,inheritance,Php,Oop,Inheritance,我正在构建一个MVC组件,我遇到了一个关于父模型和子模型的问题。我在父模型中有一些方法,它们不处理database_类对象 建造师工作得很好 但是当我在方法中使用这个对象时,它就像构造器不存在一样 Class Controlller { public function __construct() { $this->childModel = $this->model('childModel');

我正在构建一个MVC组件,我遇到了一个关于父模型和子模型的问题。我在父模型中有一些方法,它们不处理database_类对象 建造师工作得很好 但是当我在方法中使用这个对象时,它就像构造器不存在一样

  Class Controlller 
      {


        public function __construct()
        {
            $this->childModel = $this->model('childModel');

        } // end construct


    // methods go here

    }
以下是模型:

 class childModel extends parentModel {


       private $dbo;
        public function __construct()
        {
            $dbobj = new Database_class;
            $this->dbo = $dbobj;

        }

    //methods


    }

class parentModel {

    private $dbom;

      public function __construct()
      {
        $dbombj = new Database_class;
        $this->dbom = $dbombj; 
       var_dump($this->dbom); //working perfectly as database object

      }

    public function methodName()
      {
        var_dump($this->dbom); //not showing up as database object
      }
    }

我不认为这个代码正在做你认为它正在做的事情。在
childModel
中,您正在覆盖parentModel的
\uuu构造
方法,因此parentModel中的
\uu构造
永远不会被调用。因此,
$this->dbom
应该为空。此外,如果您希望从childModel中使用
$this->dbom
,您可能应该将作用域从
private$dbom
更改为
protected$dbom
。查看此页面了解更多信息:

我不需要从子模型访问$this->dbom。但是,我不想覆盖parentModel的_-construct方法,那么如何修复它呢?我想让两个构造一起工作?您可以使用
parent::\uu construct()\u construct()
中调用它。这真的违背了“extends”和parentModel的目的吗?我不想对我拥有的每个childModel都这样做?如果我删除了childModel的构造函数,父构造函数还会被覆盖吗?