我正在阅读一些看起来像这样的代码:
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;
}
...
答案 0 :(得分:6)
在第一个示例中,$args
是可选的。可以仅使用$label
和$link
的2个参数调用构造函数,并将$args
定义为空数组。
在第二个示例中,$args
参数是必需的。
(意见):我会在构造函数中留下$args = array()
并且在声明属性时很容易一眼就知道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;
}
答案 1 :(得分:2)
答案 2 :(得分:2)
这只会使$args
成为可选项。如果构造函数被称为new Menu('a', 'b')
,则args将被定义为空数组,并且不会引发有关缺失参数的错误。