我正在阅读一些代码,看起来像这样:
Class_Menu.php:
<?php
class Menu {
private $label;
private $link;
private $args;
function __construct($label, $link, $args=array()) {
$this->label=$label;
$this->link=$link;
$this->args=$args;
}
...
注意$args
是如何在__construct
中被定义为数组的。为什么要选择这种方法而不是在var列表中定义$args
呢?
<?php
class Menu {
private $label;
private $link;
private $args=array();
function __construct($label, $link, $args) {
$this->label=$label;
$this->link=$link;
$this->args=$args;
}
...
在第一个示例中,$args
是可选的。$label
和$link
的构造函数只能用2个参数调用,$args
将被定义为一个空数组。
在第二个示例中,需要使用$args
参数。
(意见):在声明属性时,我会将$args = array()
留在构造函数AND中,这样很容易一眼看出var $args是什么类型。
<?php
class Menu {
private $label;
private $link;
private $args = array();
function __construct($label, $link, $args=array()) {
$this->label=$label;
$this->link=$link;
$this->args=$args;
}
一个允许使用带有两个或三个参数的构造函数(第三个参数是可选的)。
另一个没有。
为什么不阅读函数参数的手册条目?
这只是使$args
可选。如果构造函数被调用为new Menu('a', 'b')
,那么args将被定义为一个空数组,并且不会因为缺少参数而引发错误。