使用类型提示时无法传递 null 参数

2024-04-11

以下代码:

class Type {

}

function foo(Type $t) {

}

foo(null);

运行时失败:

PHP 致命错误:传递给 foo() 的参数 1 不能为 null

为什么不允许像其他语言一样传递null?


PHP 7.1 或更高版本(2016 年 12 月 2 日发布)

您可以显式声明一个变量为null用这个语法

function foo(?Type $t) {
}

这将导致

$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error

因此,如果您想要一个可选参数,您可以遵循约定Type $t = null而如果你需要提出论点,则接受两者null及其类型,您可以按照上面的示例进行操作。

您可以阅读更多内容here https://wiki.php.net/rfc/nullable_types.


PHP 7.0 或更早版本

您必须添加一个默认值,例如

function foo(Type $t = null) {

}

这样,您就可以向其传递空值。

这在手册中有关的部分中有记录类型声明 http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration:

可以做出声明接受NULL如果参数的默认值设置为NULL.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用类型提示时无法传递 null 参数 的相关文章

  • 如何在php中关闭夏令时

    我有这行代码将夏令时设置为 打开 将其设置为 关闭 的正确方法是什么 is daylight saving On rcmail config dst active bool date I date I 这是一个大写字母 i 当当前默认时区
  • 在 Windows 上查看 PHP 文件夹

    我正在编写一个简单的 PHP 脚本来监视文件夹及其子文件夹的任何更改 新文件 修改 删除 然后执行操作 我将使用 Windows 上的命令行运行此脚本php f script php 我一直在寻找一种在 Windows 上观看具有 PHP
  • PHP 用星号替换所有字符

    假设我有一个字符串形式的密码 password thisisaplaintextpassword 我怎样才能把它变成下面的样子 password 我想通过电子邮件向用户发送他们的帐户详细信息 但不想发送整个内容 Use 字符串重复 http
  • 如何检查号码是否是巴基斯坦用户的手机号码而不是固定电话号码

    我所做的是从开头删除 92 或 0092 并使用以下代码检查它是否是巴基斯坦人的有效手机号码 if preg match 3 0 4 0 9 number 1 Pakistani mobile number else not a pakis
  • 使用 md5 加密的 PHP 和 Mysql 查询出现问题

    我使用普通的 php mysql 插入查询并使用 md5 加密密码 这是插入查询 sql mysql query INSERT INTO user username password role approved values usernam
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 如何在 Zend Framework 中存储 cron 作业的脚本?

    因为 ZF 的所有 URL 都依赖于 mod 重写 所以我并不清楚应该在哪里存储用于 cron 作业的本地脚本 有人有什么建议 或者有 正式接受 的方式吗 我用模块化目录结构 http framework zend com manual e
  • Zend IMAP 搜索和过滤器

    我如何使用 Gmail 中的过滤器进行搜索 就像获取带有特定标签的电子邮件列表或来自特定电子邮件地址的邮件列表一样 我无法在文档中找到它 注意 我使用 oAuth 进行身份验证 我希望这与搜索无关 Gmail 上的标签实际上是 从 IMAP
  • 运行 Composer 返回:“无法打开输入文件:composer.phar”

    我是 symfony2 和阅读新手symblog http tutorial symblog co uk tutorial parts 在第三章中 在尝试使用数据装置时 我尝试了以下命令 php composer phar update 但
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定
  • Symfony2中如何获取所有post参数? [复制]

    这个问题在这里已经有答案了 我想获取a的所有post参数symfony http symfony com Form I used all parameter this gt get request gt getParameterHolder
  • php - 我应该加密电子邮件地址吗?

    当用户注册时 我应该将他们的电子邮件按原样存储在数据库中还是对其进行哈希处理 我希望稍后能够解密 那么我应该使用 md5 吗 谢谢你 No md5 is 单向哈希函数 http en wikipedia org wiki Cryptogra
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • PHP7构造函数类名

    我有一个 Laravel 4 2 应用程序 它可以与 PHP5 一起使用 没有任何问题 由于我安装了一个运行 PHP7 的新 vagrant box 一旦我运行一个模型 其中函数名称与类名称 关系函数 相同 就会出现错误 如下所示
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 使用PHP套接字发送和接收数据

    我正在尝试通过 PHP 套接字发送和接收数据 一切正常 但是当我尝试发送数据时 PHP 不发送任何内容 Wireshark 告诉我发送的数据长度为 0 我正在使用这段代码
  • 将 MySQL 结果作为 PHP 数组

    mysql 表 config name config value allow autologin 1 allow md5 0 当前的 php 代码 sth mysql query SELECT rows array while r mysq
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床

随机推荐

  • 将简单类型语言的非类型 AST 转换为 GADT

    我有一个代表简单语言 AST 的 ADT data UTerm UTrue UFalse UIf UTerm UTerm UTerm UZero USucc UTerm UIsZero UTerm 该数据结构可以表示不遵循类型的无效术语 语
  • 如何根据任务或任务集切换用户?

    我的 ansible 手册中反复出现的主题是我经常必须使用 sudo 权限执行命令 sudo yes 因为我想为某个用户执行此操作 理想情况下 我宁愿使用 sudo 切换到该用户并正常执行命令 因为这样我就不必执行通常的后命令清理工作 例如
  • 具有可变参数数量的 OCaml 函数

    我正在探索 OCaml 函数的 高级 用法 我想知道如何编写具有可变数量参数的函数 例如 像这样的函数 let sum x1 x2 x3 xn x1 x2 x3 xn 通过一些类型黑客 当然 let sum f f 0 let arg x
  • 从“.exe”+偏移量读取内存?

    我正在使用 WinAPIReadProcessMemory 从游戏中读取一些 隐藏 信息 我已经使用 Cheat Engine 找出静态指针 但我不知道如何读取它们 Cheat Engine 给了我一个类似这样的指针 mygame exe
  • 在一个 Eclipse 项目中集成 Java 和 Python 代码

    我正在使用 Eclipse 和 PyDev 用 Python 编写一个编译器 我已经到了需要用 Java 编写一些代码的阶段 我在想是否有办法将它们合并到一个项目中 因为目前我有两个独立的项目 每当我需要更改Java代码时 我都必须手动将
  • 当我尝试运行测试时,为什么会收到“分段错误”错误?

    我编写了一个函数来确定是否分配默认值 如果标志不存在 它分配默认值 如果标志存在 它分配用户传递的值 我正在尝试用字符串测试我的函数 看看它是否确实给了我正确的数字 当我尝试运行测试时 我不断收到 分段错误 它可以编译 但测试就是不起作用
  • Python 中列表的切片

    我需要对列表列表进行切片 A 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 idx slice 0 4 B A idx 上面的代码没有给我正确的输出 我想要的是 1 2 3 1 2 3 1 2 3 使用切片对象很少比使用列表理
  • Java中如何获取真实的字符串高度?

    我在用着FontMetrics getHeight 获取字符串的高度 但它给了我一个错误的值 切断了字符串字符的下降部分 有更好的功能我可以使用吗 The getStringBounds 下面的方法是基于GlyphVector对于当前的Gr
  • 如何为 Laravel 5.2 雄辩模型编写“重复键更新”?

    我有一张桌子 它的唯一键是app id channel id但它没有主键 我想用on duplicated key update插入 更新的语句last update time领域在Laravel雄辩的模型 我发现updateOrCreat
  • 我可以控制网络浏览器的加载图标吗?

    我可以使用 JavaScript 控制浏览器的加载状态吗 也就是说 我希望浏览器显示其本机 加载 动画 而不是页面中我自己的加载图标 而是在浏览器加载页面时显示的图标而不是图标 您可以让浏览器加载一些页面 例如在不可见的 iframe 中
  • 无法在发布文件中找到预期的条目“main/binary-i386/Packages”(错误的sources.list条目或格式错误的文件)

    我试图在我的 Ubuntu 14 04 上升级 VLC 播放器 以下是我执行过的命令 https askubuntu com questions 105587 how to update vlc to the latest version
  • 有没有办法用 java 8 流更改日期格式?

    我想更改日期格式 dd mm yyyy to yyyy mm dd java8 流中的一行 List
  • 如果由于某种原因我必须停止迭代,在 Matlab 中保存结果的有效方法是什么?

    我试图通过运行迭代来最小化我的目标函数 这可能需要很长时间 可能是一天或更长时间 如果由于某种原因我必须停止程序或者它被挂起 那么保存迭代结果的有效方法是什么 这些迭代可能一直运行到程序因某种原因停止时 我要保存的变量是 best obj
  • 如何在 C# .NET core 控制台程序中指定 AWS 凭证

    我正在尝试测试 NET Core 控制台程序以将消息发布到 SNS 由于我在尝试让它在 Lambda 中工作时遇到问题 因此我想在非 Lambda 环境中尝试一下 在 Lambda 中 安全性由角色负责 但在控制台程序中 我认为我必须以某种
  • VS 2012 中的显式模板声明/定义

    以下代码声明一个模板 声明一个显式实例化定义 然后声明一个显式实例化声明 template
  • 在 Javascript 中将函数应用于 Null

    为什么以下工作有效 function sum a b return a b var result sum call null 3 4 7 为什么要定义结果 我调用 sum 作为 null 的方法 但 null 不是对象 不能有属性 到底是怎
  • 文件准备好澄清了吗?

    我最近看到一些使用这种模式的网站 这让我想到了一些陷阱
  • jquery中将多个数组合并为一个数组

    我正在尝试使用 jquery 将多个数组合并到一个数组 我知道我们可以使用 jquery merge 函数将两个数组合并为一个 我们也可以循环遍历这些数组并将它们连接到一个数组中 但我只是想知道是否有其他方法可以在不使用任何循环的情况下实现
  • IoC 容器本身的单元测试

    我认为以前没有人问过这个问题 尽管搜索这样的术语确实很困难单元测试ioc容器并且没有找到有关如何实现 IoC 以便执行单元测试的问题 我想对 IoC 容器本身进行单元测试 基本上是因为有时我会遇到容器问题 就像应用程序的任何其他部分一样 并
  • 使用类型提示时无法传递 null 参数

    以下代码 class Type function foo Type t foo null 运行时失败 PHP 致命错误 传递给 foo 的参数 1 不能为 null 为什么不允许像其他语言一样传递null PHP 7 1 或更高版本 201