Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP构造函数参数混乱_Php_Parameters_Constructor - Fatal编程技术网

PHP构造函数参数混乱

PHP构造函数参数混乱,php,parameters,constructor,Php,Parameters,Constructor,在阅读有关PHP构造函数的内容时,我在第页上看到了下面的示例 我无法理解为什么$id设置为空,而$args设置为空。我什么时候会用这种东西?为什么我们不能使用函数uu构造$id,$args{.,这样$x=MyClass12、array1、2、3和$y=MyClass都是有效的呢 如果没有这些默认参数,MyClass将产生错误。这些都是。如果调用者没有提供这些参数,它们将被设置为这些值。否则,它将被设置为调用者的值。这些是默认参数值 这意味着您可以在不传递任何参数的情况下调用构造函数,然后构造函数

在阅读有关PHP构造函数的内容时,我在第页上看到了下面的示例

我无法理解为什么$id设置为空,而$args设置为空。我什么时候会用这种东西?为什么我们不能使用函数uu构造$id,$args{.

,这样$x=MyClass12、array1、2、3和$y=MyClass都是有效的呢


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

这些都是。如果调用者没有提供这些参数,它们将被设置为这些值。否则,它将被设置为调用者的值。

这些是默认参数值

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

因此,您可以创建如下实例:

$mc = MyClass();
那么这什么时候有用呢?好吧,假设你有一个通常具有相同参数的类,比如说你有一个通常为normal类型的类Door。那么你可以省略传递该值,但是有时候你想要一个safe类型的门,那么你就要传递它。为了澄清:

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不支持。

当您实例化类MyClass时,您可以使用参数或不使用参数进行实例化。.当您执行$MyClass=new MyClass时。.它将采用默认参数$id=和$args=null。.但当您实例化$MyClass=new MyClass 2时,数组1,2。.它将采用$id=2和$args=array1,2…感谢您的帮助。来自Java背景,这有点不同。@rgamber:在Java中,通过重载构造函数并从该构造函数中调用不同的构造函数,同样的事情可以更详细地实现。
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');