Vil*_*agg 0 php oop constructor class
有没有什么可以阻止我在__construct()括号内提示这样的类型?
<?php
class SomeClass extends BaseClass {
public function __construct(array $someArray) {
parent::__construct($someArray);
}
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做吗?
<?php
class SomeClass extends BaseClass {
public function __construct($someArray = array()) {
parent::__construct($someArray);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这是有效的:(谢谢@hakra和@Leigh)
<?php
class SomeClass extends BaseClass {
public function __construct( array $someArray = NULL ) {
parent::__construct( (array) $someArray);
}
Run Code Online (Sandbox Code Playgroud)
对我来说,它看起来很干净,我确切地知道它应该是什么意思.
这是类型提示,没有默认值,声明必须给出一个参数,并且它的类型必须是一个数组
public function __construct(array $someArray) {
如果没有传递参数,则为没有typehint提供参数的默认值.
public function __construct($someArray = array()) {
他们是两个不同的东西.
在第二个实例中,您可以调用没有参数的函数,它将起作用,但第一个不会.
如果需要,可以将两者结合使用,以指定默认值并指定所需类型.
public function __construct(array $someArray = array()) {
或者正如@hakre所说,你可以这样做:
public function __construct(array $someArray = NULL) {