我想知道是否可以通过类型提示方法来期望基元类型?

大概是这样的:

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

或者:

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

与您使用的方式相同:

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

这在php中可能吗?

推荐答案

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

类型声明允许函数在调用时要求参数为特定类型.如果给定值的类型不正确,则会生成一个错误:在PHP5中,这将是一个可恢复的致命错误,而PHP7将抛出一个TypeError异常.

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


当被问及这个问题时,PHP 5是最新的,并说:

PHP5引入了类型暗示.函数现在可以强制参数为to be objects (by specifying the name of the class in the function prototype), interfaces, arrays (since PHP 5.1) or callable (since PHP 5.4).但是,如果将NULL用作默认参数值,则允许它作为以后任何调用的参数.

如果将类或接口指定为类型提示,则也允许其所有子对象或实现.

Type hints cannot be used with scalar types such as int or string.种资源和特征也不允许.

参考文献:http://php.net/manual/en/language.oop5.typehinting.php

Php相关问答推荐

如何在搜索域名时重定向到登陆页?

启用额外的WooCommerce产品库存位置

PHP:PHP手册-Manual

如何保存基于用户 Select 的复选框 Select 模式

筛选器具有多个查询之一

根据发货类别在WooCommerce产品页面中显示快捷代码

在PHP项目中安装OpenAI PHP SDK时出现问题

未定义的类型';PDF';在Laravel 8

Laravel withOnly不限制查询

防止 WooCommerce 在前端加载全尺寸图像

显示 woocommerce 中所选变体的属性术语描述

用户注册表单中的 HTTP 错误 405

将 PHP 版本更改为 8.1,但 WordPress 认为我们正在使用版本 7.4?

如何从 URL 核心 PHP 中的 API 获取 JSON?

在 DateTime 或 DateTimeImmutable 对象上调用modify() 时是否必须使用空格?

使用php删除数组中相同数字的所有变体

为什么在 phpunit 的开头测试 PHP_VERSION?

使用 Eloquent 更新现有的外键值

转发和非转发呼叫 - 后期静态绑定

如何正确使用Flysystem和Local Adapter