PHP构造函数参数混乱
在阅读有关PHP构造函数的内容时,我在第页上看到了下面的示例 我无法理解为什么$id设置为空,而$args设置为空。我什么时候会用这种东西?为什么我们不能使用函数uu构造$id,$args{.,这样$x=MyClass12、array1、2、3和$y=MyClass都是有效的呢PHP构造函数参数混乱,php,parameters,constructor,Php,Parameters,Constructor,在阅读有关PHP构造函数的内容时,我在第页上看到了下面的示例 我无法理解为什么$id设置为空,而$args设置为空。我什么时候会用这种东西?为什么我们不能使用函数uu构造$id,$args{.,这样$x=MyClass12、array1、2、3和$y=MyClass都是有效的呢 如果没有这些默认参数,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');