PHP中的函数__construct用于什么?

时间:2014-10-08 07:27:05

标签: php

你能给我一个包含函数__construct的例子,以及如果我们将它转​​换成程序性的php会如何编码?也许这对你来说是一个虚假的问题,但对于那些从未学习过php oop的人,在我遇到这个新功能之前真的很困惑。

例如,在此代码中,函数_construct用于实例化一个新类。

Class Car{

    private $brand;
    private $type;

    public function __construct($merk, $type){
        $this->brand= $brand;
        $this->type = $type;
    }

    public function getCar() {
        return "<strong>Brand:</strong> " . $this->merk . "<br /> <strong>Type:</strong> " . $this->type;
    }


}

但我找到了只包含此代码的新示例:

Class Game{
    public function __construct()
    {
    echo "Blah";
    }
}

为什么在最后一个例子中,函数__construct只包含单词echo“Blah”也不包含此代码 - &gt; $ this-&gt;无论用什么词?

2 个答案:

答案 0 :(得分:0)

构造函数用于实例化一个新类(虽然不是必需的),如下例所示:

<?php
Class Car{

    private $brand;
    private $type;

    public function __construct($brand, $type){
        $this->brand= $brand;
        $this->type = $type;
    }

    public function getCar() {
        return "<strong>Brand:</strong> " . $this->merk . "<br /> <strong>Type:</strong> " . $this->type;
    }


}


$car= new Car('Audi', 'A3');
echo $car->getCar(); 
/* Will return:
 Brand: Audi
 Type: A3
*/

答案 1 :(得分:0)

__construct方法通常是在创建该类的实例(称为对象)时在class中调用的方法。该方法称为构造函数,因为它构造对象,但这并不意味着必须使用该方法。

方法的要点是将对象的变量设置为它们的初始值,这些初始值可以是基本类型,例如整数,或者可能是另一个类的实例。如果变量不是默认值,__construct方法可以接受参数来设置变量的值。

您不必使用构造函数方法设置变量,也不是您唯一能做的事情。例如,您可以在该类或其他地方打印成功消息或调用另一种方法。所以你的两个例子都是有效的。第一个是你期望如何使用构造函数,但第二个仍然是vaild。就像我说的那样,__construct在创建对象时调用的方法,这并不意味着你必须将它用于预期目的。

在PHP中,不需要在类中使用构造函数方法,但在许多其他面向对象的编程语言(如Java)中,如果构造函数不存在,那么它将在编译时产生错误。这是因为PHP被称为弱类型语言,它有许多优点和缺点,你可以进一步研究。

因为__construct是PHP类中专门使用的magic methods之一,所以它无法转换为过程代码。要使用参数调用方法,在代码中分配类时,应该在创建语句中提供参数,如下所示;

$object = new MyClass($arg1,$arg2);

除了创建新对象之外,您无法从类外部调用构造函数。唯一的例外是子类(即扩展另一个类的类)可以使用parent::__construct();调用其父类的构造函数。

希望这有帮助。