返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP TypeError 内部函数的一致类型错误
  • 130
分享到

PHP TypeError 内部函数的一致类型错误

2024-02-27 19:02:00 130人浏览 安东尼
摘要

对于用户定义的函数,传递非法类型的参数会导致 TypeError。 对于内部函数,其行为取决于多种因素,但默认是抛出警告并返回 null。 该 RFC 建议始终为所有无效参数类型生成 TypeError

对于用户定义的函数,传递非法类型的参数会导致 TypeError。 对于内部函数,其行为取决于多种因素,但默认是抛出警告并返回 null。 该 RFC 建议始终为所有无效参数类型生成 TypeError 异常,无论函数是用户定义的还是扩展定义的。

首先,对当前行为的详细描述是有序的。 对于无效类型的用户函数参数,无论 strict_types 选项如何,总是会导致 TypeError:


function foo(int $bar) {}
foo("not an int");
// TypeError: Argument 1 passed to foo() must be of the type int, string given

上述代码错误情况如下所示

php fatal error TypeError

当然,strict_types 改变了哪些值被认为与某种类型兼容,但它不会修改错误报告机制。 对于内部函数,基本的行为是抛出警告并返回 null:


var_dump(strlen(new stdClass));
// Warning: strlen() expects parameter 1 to be string, object given
// NULL

上述代码产生的错误情况如下所示

php warning typeerror

null 返回值只是大多数函数遵循的约定。 还有大约 150 个函数会返回 false。 但是,如果启用了 strict_types,则会生成 TypeError,这与用户定义的函数一致:


declare(strict_types=1);
var_dump(strlen(new stdClass));
// TypeError: strlen() expects parameter 1 to be string, object given

上面代码产生的错误如下所示

php fatal error strlen typeerror

此外,有些函数会选择始终生成 TypeError,而不管 strict_types 设置如何。 所有构造函数都是这种情况,因为它们没有返回空值的有意义的方式。 其他函数,例如 random_int 或整个 sodium 扩展,也可以选择抛出。 新引入的方法通常会这样做,以便在所有错误条件下始终抛出异常。

最后,报告错误的方式取决于检测到违规的机制。 以上描述适用于内部函数通常使用的 zend_parse_parameters/ZEND_PARSE_PARAMETERS api。 但是,函数可以另外指定参数信息(通过反射提供)。 如果参数信息指定了类型,那么违反这些将始终导致 TypeError。

这可能导致错误行为取决于哪个参数无效的特殊情况:


var_dump(DateTime::createFromFORMat(new stdClass, "foobar"));
// Warning: DateTime::createFromFormat() expects parameter 1 to be string, object given
// bool(false)
 
var_dump(DateTime::createFromFormat("foobar", "foobar", new stdClass));
// TypeError: Argument 3 passed to DateTime::createFromFormat() must be an instance of DateTimeZone or null, instance of stdClass given

在前一种情况下,zend_parse_parameters 检测到类型不匹配并导致警告和错误,在后一种情况下,参数信息检测到类型不匹配并导致 TypeError。 都是为了同一个功能。

--结束END--

本文标题: PHP TypeError 内部函数的一致类型错误

本文链接: https://www.lsjlt.com/news/568928.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP TypeError 内部函数的一致类型错误
    对于用户定义的函数,传递非法类型的参数会导致 TypeError。 对于内部函数,其行为取决于多种因素,但默认是抛出警告并返回 null。 该 RFC 建议始终为所有无效参数类型生成 TypeError...
    99+
    2024-02-27
  • PHP 函数参数类型的潜在错误
    php 函数参数类型潜在错误:弱类型语言允许不同类型参数,但可能导致类型转换问题。php 自动将参数转换为函数所需的类型,可能造成意外结果。避免陷阱:始终指定参数类型、使用类型暗示、严格...
    99+
    2024-04-19
    php 函数参数类型
  • PHP 函数参数类型的错误处理
    php 函数参数类型错误处理有三种方法:强制类型、类型检查和使用默认值。强制类型强制要求参数的特定类型,类型检查会对变量类型进行检查,默认值允许显式设置参数的默认值。通过正确处理函数参数...
    99+
    2024-04-19
    php 参数类型
  • 哪些情况会导致 Golang 函数类型错误?
    函数类型错误发生于函数参数或返回值类型与声明不符。原因包括:1. 参数类型不匹配;2. 返回值类型不匹配。修复方法:1. 确保参数类型与定义匹配;2. 确保返回值类型与定义匹配。 Go...
    99+
    2024-04-20
    golang 函数类型错误
  • 如何用 PHPStan 调试 PHP 函数的类型错误?
    使用 phpstan 调试 php 函数的类型错误:使用 phpstan 分析代码以推断变量的类型并检查这些类型是否符合预期。通过安装 phpstan、配置配置文件和运行分析命令来使用它...
    99+
    2024-04-23
    phpstan 类型错误 composer
  • golang函数类型的错误处理
    在 go 语言中,处理返回错误的函数时,可以使用函数类型,其包含一个额外的 error 类型返回类型。函数类型定义了函数签名的参数列表和返回类型,可以创建返回错误的函数并处理潜在的错误。...
    99+
    2024-04-29
    golang 错误处理
  • PHP 函数命名错误的常见类型是什么?
    常见的 php 函数命名错误类型有:使用不描述性的名称使用模糊不清的名称使用缩写或俚语使用下划线或连字符使用不一致的大小写 PHP 函数命名中的常见错误类型 命名规范是构建健壮和易于维...
    99+
    2024-04-20
    php 函数命名
  • 自定义golang函数错误类型
    是的,在 go 中可以定义自定义错误类型,通过创建实现 error 接口的结构体,并提供 error() 方法返回错误消息。自定义错误类型可以使用 errors.new 函数或自定义类型...
    99+
    2024-05-02
    golang 函数类型 关键词
  • php class类内部函数如何调用
    这篇文章主要介绍“php class类内部函数如何调用”,在日常操作中,相信很多人在php class类内部函数如何调用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php class类内部函数如何调用”的疑...
    99+
    2023-07-05
  • PHP 中错误值是否可以作为函数返回值的类型?
    php 中确实允许将错误值作为函数返回值类型,使用 throwable 或其子类作为返回值类型,语法如 function_name(): throwable {}。通过明确表示函数可能会...
    99+
    2024-04-10
    php 错误值
  • PHP 函数返回哪些内置数据类型?
    php函数可以返回各种内置数据类型,包括:1. 整数;2. 浮点数;3. 字符串;4. 布尔值;5. 数组;6. 对象;7. null。 PHP 函数返回哪些内置数据类型? PHP 函...
    99+
    2024-04-19
    数据类型 php
  • 使用类型断言在golang函数中处理不同类型的错误
    在 go 函数中处理不同类型的错误时,可以使用类型断言来检查变量的实际类型并将其转换为所需的类型。类型断言的语法为:variable, ok := interfacevariable.(...
    99+
    2024-04-24
    编程 错误处理 golang
  • PHP 函数常见错误的错误级别
    在 php 中,错误级别决定了错误的严重程度和处理方式。常见的错误级别包括:e_warning:警告,不一定会停止脚本执行。e_notice:通知,比 e_warning 更不严重。e_...
    99+
    2024-04-13
    php 错误级别
  • 总结Node.js中的一些错误类型
    前言 Node.js应用中可能会发生多种类型的错误。如:当出现语法错误或运行时错误时,会触发JavaScript错误;当试图试访问一个不存在或没有访问的文件时,会触发系统错误;除JavaScript错误和系...
    99+
    2022-06-04
    错误 类型 Node
  • PHP 函数的错误处理
    php 中实现错误处理的步骤如下:使用 set_error_handler() 连接一个错误处理程序到函数;定义错误处理程序,指定要捕获的错误类型;通过 trigger_error() ...
    99+
    2024-04-13
    php 错误处理
  • PHP 函数内部结构:一个全面的视角
    php函数是一种高度可重用的代码块,用于执行特定任务。它包含函数声明、函数体、参数传递、变量范围和返回值。函数接受的参数通过传值调用传递,并在函数内部声明的变量只能在这个函数中访问。通过...
    99+
    2024-04-10
    函数 php
  • 为什么我的自定义错误类型会导致特定模式的错误?
    有志者,事竟成!如果你在学习Golang,那么本文《为什么我的自定义错误类型会导致特定模式的错误?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续...
    99+
    2024-04-05
  • Golang泛型如何解决函数中与类型相关的错误?
    泛型解决了 go 函数中与类型相关的错误,允许创建通用函数,可接受并操作各种类型的数据。通过使用类型变量,泛型函数可以适应传递给它们的任何类型,从而避免类型冲突错误,并简化和提高代码的灵...
    99+
    2024-04-16
    go泛型 泛型错误修复 golang 编译错误
  • PostgreSQL各数据类型的内置函数
    参考《PostgreSQL实战》 3.1.2 数字类型操作符和数学函数 PostgreSQL 支持数字类型操作符和丰富的数学函数 例如支持加、减、乘、除、模取取余操作符 SELECT 1+2, 2*3, 4/2, 8%3; ...
    99+
    2018-03-07
    PostgreSQL各数据类型的内置函数
  • C++ 函数返回值的内幕:类型、含义一览
    函数返回值是函数执行后的结果,类型可以是基本类型、自定义类型或 void。返回类型在函数声明中指定,void 表示不返回值。返回值含义由函数实现决定,例如,可以表示结果、函数状态或数据指...
    99+
    2024-05-01
    c++ 函数返回值
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作