在任何人说什么之前。我曾经去过很多文章,而且我无法绕过构造函数的目的。
我在网站上找到了一个例子。这是代码:
<?php
class dogtag {
public $Words;
}
class dog {
public $Name;
public $DogTag;
public function bark() {
print "Woof!\n";
}
public function __construct($DogName) {
print "Creating $DogName\n";
$this->Name = $DogName;
$this->DogTag = new dogtag;
$this->DogTag->Words = "My name is $DogName. If you find me, please call 555-1234";
}
}
class poodle extends dog {
public function bark() {
print "Yip!\n";
}
}
$poppy = new poodle("Poppy");
print $poppy->DogTag->Words . "\n";
?>
它回应了以下内容:
Creating Poppy My name is Poppy. If you find me, please call 555-1234
有人可以像我一样向我解释这个代码。我只是没有得到它。
答案 0 :(得分:0)
构造函数用于在启动新类对象后执行所需的任何初始过程。好的,这非常好看吗?让我们通过一个例子来分解这意味着什么。让我们首先创建一个类,并在该类中放置一些变量,一些函数和一个构造函数! (我更容易用更简单的类来解释构造函数背后的概念.babysteps。)
<?php
class myInfo
{
protected $limit;
public function __construct($limit = 10)
{
$this->limit = $limit;
}
public function awesomesauce() {
//...some random code...
}
}
$variable = new myInfo();//initiating an instance of class myInfo
?>
代码$variable = new myInfo();
正在启动 myInfo 类型的对象。当启动发生时,php代码立即知道,必须调用构造函数public function __construct($limit = 10)
。在这种情况下,$limit
的值为10.但是,如果我稍后再执行以下代码:
$variableTwo = new myInfo(20);
括号内传递的变量将直接传递给构造函数。
因此,根据具体情况,我可以在创建 myInfo 类型的实例时不传递任何变量,在这种情况下,构造函数将使用默认值($limit = 10)
或者我可以传递一个值。如果php没有能力使用构造函数,那么每次启动类 myInfo 的新对象时,我都必须使用新的代码行手动更改该变量。现在这只是一个简单的例子。想象一下,如果您不仅要启动值,还要运行与服务器上其他位置的API一起使用的函数。你可以肯定地看到自动发生这种情况的好处,而不是每次启动一个对象时都被迫写入多行代码。
如果有帮助,请告诉我。