使用“?”的参数和类型声明对于可空值
Arguments and type declarations using "?" for nullable values
PHP 版本 7.3.8
我一直在阅读上面页面上的这句话:
As of PHP 7.1.0, return values can be marked as nullable by prefixing the type name with a question mark (?). This signifies that the function returns either the specified type or NULL.
传递了以下值,结果记录在此处:
$marketID = 'abcdef'; // Result is: Throws a type error.
$marketID = '12345'; // Result is: It will be cast as an int.
$marketID = 12345; // Result is: It will successfully execute.
$marketID = null; // Result is: It will successfully execute.
// 应用控制器
protected function setMarketID(?int $marketID)
{
$this->marketID = $marketID;
return $this;
}
protected function getMarketID()
{
// Will return an int or null.
return $this->marketID;
}
这样的编码是否被认为是可以接受的。 IE:以这种方式使用 (?) 来接受类型和空值,因为手动状态 return 值可以被标记...不是传入值,但它有效吗? (请参阅编辑)
为以后阅读这篇文章的任何人编辑post:
// 将 return 一个 int 或 null。
如果您将 int 参数传递给 setter,则 getter 将自动 return 一个 int,如果您将 null 参数传递给 setter,则 getter 将自动return 空。
@yivi
是的,非常有帮助,谢谢。我添加了严格类型并且它工作得很好,我还添加了您关于声明 return 值的建议。即:
protected function getMarketId():?int
再次完美运行。
您还没有在示例中声明一个 return 类型。
您在 setMarketId()
中声明了一个参数类型 (?int
)。所以此方法将接受整数或空值。
如果您声明您正在使用 strict_types,那么该方法甚至不会接受 '12345'
或 123.5
,并且只接受适当的 int
或 null
值。
声明一个你期望的 return 值(并且与 getMarketId()
会 return 的值一致),将像这样完成:
protected function getMarketId():?int
{
return $this-marketId;
}
当然是"acceptable"声明一个类型可以为空。它是否有意义将完全取决于您的应用程序,但这是一种非常常见的用法。
PHP 版本 7.3.8
我一直在阅读上面页面上的这句话:
As of PHP 7.1.0, return values can be marked as nullable by prefixing the type name with a question mark (?). This signifies that the function returns either the specified type or NULL.
传递了以下值,结果记录在此处:
$marketID = 'abcdef'; // Result is: Throws a type error.
$marketID = '12345'; // Result is: It will be cast as an int.
$marketID = 12345; // Result is: It will successfully execute.
$marketID = null; // Result is: It will successfully execute.
// 应用控制器
protected function setMarketID(?int $marketID)
{
$this->marketID = $marketID;
return $this;
}
protected function getMarketID()
{
// Will return an int or null.
return $this->marketID;
}
这样的编码是否被认为是可以接受的。 IE:以这种方式使用 (?) 来接受类型和空值,因为手动状态 return 值可以被标记...不是传入值,但它有效吗? (请参阅编辑)
为以后阅读这篇文章的任何人编辑post:
// 将 return 一个 int 或 null。
如果您将 int 参数传递给 setter,则 getter 将自动 return 一个 int,如果您将 null 参数传递给 setter,则 getter 将自动return 空。
@yivi
是的,非常有帮助,谢谢。我添加了严格类型并且它工作得很好,我还添加了您关于声明 return 值的建议。即:
protected function getMarketId():?int
再次完美运行。
您还没有在示例中声明一个 return 类型。
您在 setMarketId()
中声明了一个参数类型 (?int
)。所以此方法将接受整数或空值。
如果您声明您正在使用 strict_types,那么该方法甚至不会接受 '12345'
或 123.5
,并且只接受适当的 int
或 null
值。
声明一个你期望的 return 值(并且与 getMarketId()
会 return 的值一致),将像这样完成:
protected function getMarketId():?int
{
return $this-marketId;
}
当然是"acceptable"声明一个类型可以为空。它是否有意义将完全取决于您的应用程序,但这是一种非常常见的用法。