你能给我一个包含函数__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;无论用什么词?
答案 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();
调用其父类的构造函数。
希望这有帮助。