PHP 类型提示到基元值?

2022-08-30 08:32:10

我想知道是否可以键入提示一个方法来期望基元类型?

像这样:

public function someMethod(string $str)
                         //^^^^^^

艺术

private function anotherMethod(int $num)
                             //^^^

就像你一样:

private function otherMethod(Person $rambo)
                           //^^^^^^

这在php中可能吗?


答案 1

在 PHP 7 中,他们添加了以下内容:

类型声明允许函数要求参数在调用时属于特定类型。如果给定值的类型不正确,则会生成错误:在 PHP 5 中,这将是一个可恢复的致命错误,而 PHP 7 将引发 TypeError 异常。

参考资料: http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration


当这个答案被问到时,PHP 5是最新的,并说了以下内容:

PHP 5 引入了类型提示。函数现在能够强制参数成为对象(通过在函数原型中指定类的名称),接口,数组(从PHP 5.1开始)或可调用(从PHP 5.4开始)。但是,如果将 NULL 用作默认参数值,则将允许它作为以后任何调用的参数。

如果类或接口被指定为类型提示,则其所有子级或实现也是允许的。

类型提示不能与标量类型(如 int 或字符串)一起使用。资源和特征也是不允许的。

参考资料: http://php.net/manual/en/language.oop5.typehinting.php


答案 2

不。不能为基元键入提示,因为 PHP 具有基元的自动转换功能。请参阅 http://bugs.php.net/bug.php?id=29508。这永远不会改变,除非PHP团队突然改变主意(这是值得怀疑的,他们很固执)。


推荐