Php 如果声明stricttype=1,是否需要null条件?
我有PHP中的类方法,声明了严格类型,它的第一个参数是XMLWriter(应该生成XML)。我想知道我是否需要检查它的空条件,或者PHP解释检查甚至空指针?我以前每次都这么做,但是PHP7和严格类型需要吗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将强制错误类型的值进入 如果可能,应为标量类型。例如,一个函数 为期望字符串的参数指定一个整数将得
谢谢如果您将一个参数键入为
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
}