用于PHP的构造函数是什么?

时间:2016-05-16 01:25:21

标签: php

在任何人说什么之前。我曾经去过很多文章,而且我无法绕过构造函数的目的。

我在网站上找到了一个例子。这是代码:

<?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

有人可以像我一样向我解释这个代码。我只是没有得到它。

1 个答案:

答案 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一起使用的函数。你可以肯定地看到自动发生这种情况的好处,而不是每次启动一个对象时都被迫写入多行代码。

如果有帮助,请告诉我。