Php 如果声明stricttype=1,是否需要null条件?

Php 如果声明stricttype=1,是否需要null条件?,php,null,arguments,php-7.4,Php,Null,Arguments,Php 7.4,我有PHP中的类方法,声明了严格类型,它的第一个参数是XMLWriter(应该生成XML)。我想知道我是否需要检查它的空条件,或者PHP解释检查甚至空指针?我以前每次都这么做,但是PHP7和严格类型需要吗 谢谢如果您将一个参数键入为XMLWriter,则不可能将NULL传递给该方法。PHP7的严格类型声明不会影响此行为 如果声明stricttype=1,是否需要null条件 默认情况下, PHP将强制错误类型的值进入 如果可能,应为标量类型。例如,一个函数 为期望字符串的参数指定一个整数将得

我有PHP中的类方法,声明了严格类型,它的第一个参数是XMLWriter(应该生成XML)。我想知道我是否需要检查它的空条件,或者PHP解释检查甚至空指针?我以前每次都这么做,但是PHP7和严格类型需要吗


谢谢

如果您将一个参数键入为
XMLWriter
,则不可能将
NULL
传递给该方法。PHP7的
严格类型
声明不会影响此行为


如果声明stricttype=1,是否需要null条件

默认情况下, PHP将强制错误类型的值进入 如果可能,应为标量类型。例如,一个函数 为期望字符串的参数指定一个整数将得到 字符串类型的变量

严格类型仅为标量类型声明定义,对象是复合类型

因此,您不需要在内部担心对象。但是,您需要担心非内部对象,并问问自己:

此参数可以为空吗?

如果是,则需要检查参数的可空性(本例中为
$writer


有三种不同的方法来处理可为空的数据类型:

1-将参数的默认值设置为NULL

function foo(XMLWriter $writer = null) ...
然后在方法内检查
$writer
是否为null


2-在参数数据类型(PHP+7.1)中添加一个前导问号符号

注意:与(方法1)不同,此处的参数没有默认值


3-捕获
类型错误
异常(PHP+7)


你能添加你的类定义吗?我取决于您是使用
XmlWriter$writer
还是
?XmlWriter$xml
function foo (?XMLWriter $writer) ...
class A {
    public function foo (XMLWriter $writer) {
    }
}

$a = new A;

try {
    $a->foo(null);
} catch (TypeError $e) {
    // Error handling
}