0

在阅读有关 PHP 构造函数的信息时,我在此页面上遇到了以下示例。

<?php
    class MyClass {
        // use a unique id for each derived constructor,
        // and use a null reference to an array, 
        // for optional parameters
        function __construct($id="", $args=null) {
            // parent constructor called first ALWAYS
            /*Remaining code here*/
        }
    }

我无法理解为什么$id设置为""和。我什么时候会使用这样的东西?为什么我们不能只使用.$argsnullfunction __construct($id, $args) {

4

3 回答 3

4

这些是默认参数。当调用者未提供它们时,它们将被设置为这些值。否则,它将被设置为调用者的值。

于 2013-02-09T21:38:51.117 回答
3

这样两者$x = MyClass("12", array(1, 2, 3))$y = MyClass()都是有效的。

如果没有这些默认参数,MyClass()将产生错误。

于 2013-02-09T21:38:47.770 回答
3

这些是默认参数值。

这意味着您可以在不传递任何参数的情况下调用构造函数,然后构造函数会将这些值添加到参数中。

因此,您可以像这样创建一个实例:

$mc = MyClass();

那么这什么时候有用呢?好吧,假设您有一个通常具有相同参数的类,假设您有一个Door通常是 type 的类normal。然后你可以省略传递那个值,但有时你想要一个Door安全类型的,然后你想传递它。澄清:

class Door {
  private $door_type;
  public function __construct($type='normal') {
    $this->door_type = $type;
  }
}

//Create a 'normal' door
$normal_door = new Door();
$normal_door = new Door('normal'); //the same as above

//Create a 'safe' door
$safe_door = new Door('safe');

这个例子显然不是你在现实世界中实现它的方式,但我希望你能看到它的用途。

请注意,并非所有语言都支持这一点,例如 Java 不支持。

于 2013-02-09T21:44:23.493 回答