我已经注意到__construct有很多类。我读了一些书,上网浏览了一下,但我找不到我能理解的解释。我只是从面向对象编程开始。

我想知道是否有人能给我一个大概的概念,然后是一个简单的例子,它是如何与PHP一起使用的?


当前回答

我认为这对于理解构造函数的目的很重要。 即使在阅读了这里的回复后,我也花了几分钟才意识到这是原因。 我已经养成了一个习惯,即显式地编码所有启动或发生的事情。换句话说,这将是我的猫类,我将如何称呼它。

class_cat.php

class cat {
    function speak() {
        return "meow";  
    }
}

somepage.php

include('class_cat.php');
mycat = new cat;
$speak = cat->speak();
echo $speak;

在@Logan Serman给出的“类猫”的例子中,假设每次你创建一个类“猫”的新对象时,你都希望猫“喵”,而不是等待你调用函数让它喵。

通过这种方式,我的大脑在明确地思考构造函数方法使用隐式的地方,这使得它一开始很难理解。

其他回答

__construct是一个在使用新对象之前初始化它的方法。 http://php.net/manual/en/language.oop5.decon.php#object.construct

__construct总是在创建新对象时调用,或者在初始化时调用。它适用于对象在使用之前可能需要的任何初始化。__construct方法是类中执行的第一个方法。

    class Test
    {
      function __construct($value1,$value2)
      {
         echo "Inside Construct";
         echo $this->value1;
         echo $this->value2;
      }
    }

//
  $testObject  =  new Test('abc','123');

__construct方法用于在第一次创建对象时传入参数——这被称为“定义构造函数方法”,是一种常见的做法。

然而,构造函数是可选的——所以如果你不想在对象构造时传递任何参数,你就不需要它。

So:

// Create a new class, and include a __construct method
class Task {

    public $title;
    public $description;

    public function __construct($title, $description){
        $this->title = $title;
        $this->description = $description;
    }
}

// Create a new object, passing in a $title and $description
$task = new Task('Learn OOP','This is a description');

// Try it and see
var_dump($task->title, $task->description);

有关什么是构造函数的更多细节,请参阅手册。

注意:如果子类定义了构造函数,父构造函数不会隐式调用。为了运行父构造函数,需要在子构造函数中调用parent::__construct()。如果子类没有定义构造函数,那么它可以像普通的类方法一样从父类继承(如果它没有声明为private)。

__construct只是简单地启动一个类。假设您有以下代码;

Class Person { 

 function __construct() {
   echo 'Hello';
  }

}

$person = new Person();

//the result 'Hello' will be shown.

我们没有创建另一个函数来响应单词“Hello”。它只是表明关键字__construct在初始化类或对象时非常有用。