Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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_Class_Oop_Constructor - Fatal编程技术网

PHP构造函数中的类型暗示?

PHP构造函数中的类型暗示?,php,class,oop,constructor,Php,Class,Oop,Constructor,在\uu construct()括号中是否有任何东西可以阻止我这样进行类型暗示 <?php class SomeClass extends BaseClass { public function __construct(array $someArray) { parent::__construct($someArray); } 这是没有默认值的类型暗示,说明必须给出参数,并且它的类型必须是数组 public funct

\uu construct()
括号中是否有任何东西可以阻止我这样进行类型暗示

<?php

    class SomeClass extends BaseClass {

        public function __construct(array $someArray) {

            parent::__construct($someArray);
        }

这是没有默认值的类型暗示,说明必须给出参数,并且它的类型必须是数组

public function\u构造(数组$someArray){


如果没有传递参数,并且没有类型提示,那么这将为参数提供默认值

public function\uuu构造($someArray=array()){


它们是两种不同的东西

在第二种情况下,您可以不带参数地调用函数,它将工作,但第一种情况不会

如果需要,可以将两者结合起来,以指定默认值并指定所需类型

public function\uuu构造(数组$someArray=array()){

或者如@hakre所述,您可以:

公共函数uu构造(数组$someArray=NULL){

您可以这样做:

public function __construct(array $someArray = NULL)
{
    $someArray = (array) $someArray;
    parent::__construct($someArray);
    ...
这里的情况是使用规则的
=NULL
异常。下一行:

    $someArray = (array) $someArray;
这只是将
NULL
转换为空数组的一种简写方式,否则数组将保持原样(即所谓的to数组):

NULL
转换为数组将导致空数组

(发件人:)

当然你可以写得更短:

public function __construct(array $someArray = NULL)
{
    parent::__construct((array) $someArray);
}

但这并不能很好地解释它。

看起来很合法-为什么不试试呢?你可以两个都做:_构造(array$arr=array())你已经键入了代码,为什么不试着运行它?@Pekka,是的,我想我只需要测试一下:)我需要能够让数组可选。F.ex.u构造(array$someArr=false)。您认为它有效吗?不必。如果将其设置为可选的
(array$someArray=NULL)
,请检查NULL,将其设置为可选。
\u构造(array$someArray)
将不接受
NULL
作为其参数。
array$someArray=array()
可以,使用
null
在我看来只是误导。@Jack你是对的,它只能提供null作为默认值。谢谢,我没有意识到这条规则有
null
例外。谢谢你们的解释。我试着投票给你们,但我只是收到一些无聊的消息。好的,我我尝试了这个方法,效果非常好。对我来说,像这篇文章中描述的@hakra一样做这个方法看起来很棒。谢谢。
    $someArray = (array) $someArray;
public function __construct(array $someArray = NULL)
{
    parent::__construct((array) $someArray);
}