PHP 7 和严格的“资源”类型

2024-02-12

PHP 7 支持资源的严格类型吗?如果是这样,怎么办?

例如:

    declare (strict_types=1);

    $ch = curl_init ();
    test ($ch);

    function test (resource $ch)
    {

    }

上面会报错:

致命错误:未捕获类型错误:传递给 test() 的参数 1 必须是给定资源的资源实例

var_dump 上$ch揭示它是资源(4,卷曲),手册上说curl_init ()返回一个资源。

是否有可能严格输入test()功能来支持$ch variable?


PHP 没有资源的类型提示 https://wiki.php.net/rfc/scalar_type_hints because

不添加资源的类型提示,因为这会阻止从资源移动到现有扩展的对象,而有些扩展已经这样做了(例如 GMP)。

但是,您可以使用is_resource() http://php.net/is_resource在函数/方法体内验证传递的参数并根据需要进行处理。可重用的版本将是这样的断言:

function assert_resource($resource)
{
    if (false === is_resource($resource)) {
        throw new InvalidArgumentException(
            sprintf(
                'Argument must be a valid resource type. %s given.',
                gettype($resource)
            )
        );
    }
}

然后您可以在代码中使用它,如下所示:

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

PHP 7 和严格的“资源”类型 的相关文章

  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • ASCII“../”是 PHP 中指示目录遍历的唯一字节序列吗?

    我有一个 PHP 应用程序 它使用 GET参数来选择文件系统上的 JS CSS 文件 如果我拒绝输入字符串包含的所有请求 或者可见 7 位 ASCII 范围之外的字节 当路径传递到 PHP 的底层 基于 C 文件函数时 这是否足以防止父目录
  • MVC和依赖注入,被迫使用单例Controller?

    我正在致力于构建一个根据 MVC 原则运行并利用依赖注入的 PHP 框架 我想我已经把前端控制器部分放下了 有一个工作路由器实例化控制器实例并根据请求的 URI 调用适当的操作 接下来是依赖注入 我想实现一个使用反射解决依赖关系的容器 这样
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • PHP strtotime() 未返回正确的月份

    由于当前月份 年份是 2012 年 1 月 为什么以下代码返回 2011 年 12 月而不是 2011 年 11 月 echo date F Y strtotime 2 months 如果有影响的话 这是在 PHP 5 3 0 上 要获得您
  • PHP 启动:无法加载动态库 php5.4.3/ext/php_ffmpeg.dll 不是有效的 Win32 应用程序

    再会 我尝试在 Windows 7 计算机上安装 dll 文件 php ffmpeg 但不断收到此错误 29 Jan 2013 11 37 00 UTC PHP Warning PHP Startup Unable to load dyna
  • 为什么我的浮点数大于 1 时在 MYSQL 中存储为 .9999?

    我将进程时间作为 float 4 4 存储在 MySQL 数据库中 start time microtime TRUE things happen in my script end time microtime TRUE process t
  • 安装 OCI8:如何纠正“使用未定义常量 OCI_COMMIT_ON_SUCCESS”错误?

    我正在尝试在 RedHat 服务器 RHEL7 上为我的 Apache 服务器安装 OCI8 此时 当我尝试使用 Symphony 连接到我的服务器时 出现以下错误 异常 ErrorException 使用未定义的常量 OCI COMMIT
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • Laravel:使用 Faker 播种多个独特的列

    介绍 怎么样 伙计们 我有一个关于模型工厂和多个独特列的问题 背景 我有一个名为 Image 的模型 该模型将语言支持存储在单独的模型中 图片文字 图片文字 has an image id栏 语言栏和文本栏 图片文字有一个约束MySQL那个
  • php 邮件特殊字符 utf8

    我有以下脚本 在电子邮件中 主题 Testmail Special Characters Body Hi there this isn t somet
  • laravel 5.3 新的 Auth::routes()

    最近开始使用laravel 5 3写博客 但是运行后出现一个问题php artisan make auth 当我运行这个时 它会在我的web php 这是其中的代码 Auth routes Route get home HomeContro
  • PHP括号少IF条件不接受多个语句

    我从来都不喜欢控制结构中的括号 直到今天我才意识到它如何只接受括号内的一条语句而不是 if 条件 如果我有多个语句 它会抛出语法错误 这是 PHP 的工作方式还是我的 IDE 有问题 显然错误很明显 但我只是想确保这是正常的 如果您有任何其
  • 访问 Magento 购物车和/或结帐中的运费

    请注意 这个问题是关于运费 而不是价格 有一个重要的区别 即运输方式为店主支付的费用是多少 而不是客户支付的费用 The shipping tablerate数据库表包括一个cost字段 该字段填充在Mage Shipping Model
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 为什么 LinkedIn v2 Share API 在任何 v2/shares 端点上给出权限不足的错误?

    当我调用任何 v2 LinkedIn 共享 API 端点时 例如https api linkedin com v2 socialActions https api linkedin com v2 socialActions share UR
  • Monolog,如何将 PHP 数组记录到控制台?

    我正在使用浏览器处理程序将消息记录到 JS 控制台 require once vendor autoload php use Monolog Logger use Monolog Handler BrowserConsoleHandler
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • 一些基本的 PHP 问题 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是有一些基本的 php 问题来加深我对学习的理解 但我找不到简单的答案 我有一个 php ajax 应用程序 它生成 mysql

随机推荐

  • Android-如何在简单的纸张列表视图中显示图片

    我正在尝试在 SimpleAdapter 列表视图中显示图片 我将 Picasso 包含在我的项目中 但我不知道如何将 Picasso 与 SimpleAdapter 一起使用 List
  • 如何在 JavaScript 中表示代数数据类型和模式匹配

    在像 OCaml 这样的函数式语言中 我们有模式匹配 例如 我想记录用户在我的网站上的操作 操作可以是 1 访问网页 2 删除项目 3 检查其他用户的个人资料等 在 OCaml 中 我们可以编写如下内容 type Action VisitP
  • Java 2d数组作为表,打印出索引

    所以 基本上我需要将二维数组打印为表格 并在其 周围 放置索引 Random rnd new Random int array new int 5 5 for int row 0 row lt array length row for in
  • ControlTemplate.Triggers Silverlight 3 中的 WPF 等效项

    我的 WPF 应用程序中有此 controltemplate 触发器内容
  • xsd.exe 自动实现的属性

    是否可以强制 xsd exe 生成自动实现的属性 而不是 xsd exe 生成的丑陋的手动实现的代码 public abstract partial class SomeClass private string valueField
  • ETrade API无人值守认证

    背景ETrade 身份验证系统让我创建一个 RequestToken 然后执行一个授权 URL 这将打开一个 ETrade 页面 用户登录以授权其帐户上的活动 他们会收到一个 PIN 码 并将其输入到我的应用程序中 我使用 RequestT
  • izpack安装后执行脚本

    我已经制作了包含 jboss 的 jar 文件 我想在 jar 解压并完全安装在我的计算机上时启动我的 Web 应用程序 我应该在 izpack 中的哪里编写脚本或代码或 xml 标记 以便安装应用程序后standalone sh 自动运行
  • 将32位dll转换为64位dll

    当我尝试在 64 位应用程序中使用它时 我有 32 位编译的 dll 但它无法加载 所以我想将dll转换为64位 当应用程序的平台从 任何CPU 或 x64 更改为 x86 时 它工作正常 但我想在 64 位下使用它 因为我要从 ASP 页
  • 如何更改Android中的日期时间语言

    我们如何在不更改设备语言的情况下更改 Android 中的日期 时间语言 下面是我当前的代码 下面的代码根据设备语言而变化 但我想在不更改设备语言设置的情况下进行更改 公共静态字符串格式时间 日期时间 String timeFormat U
  • 使用 Windows 服务实现计划作业的最佳方式是什么

    我有一个偶尔在晚上运行的数据库作业 我需要一个 Windows 服务来定期轮询数据库 以便在 SQL 作业完成后做更多的工作 我正在寻找一个可靠的示例来编写一个调度程序 该调度程序可以优雅地失败而不会导致服务崩溃 只需将其设置为计划任务即可
  • Keras Sequential 不提供输入形状

    我目前有一个 keras 模型 如下所示 model keras Sequential model add keras layers Dense 100 activation tf nn relu model add keras layer
  • 交叉编译 PHP [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经下载了 PHP 5 4 0 源代码 将其解压并移至源文件夹中 我做了一个配置 configure build x86 64 unknown li
  • 将 Matlab Simulink 模型保存为带有紧密边界框的 PDF

    给定一个 Simulink 框图 模型 我想生成一个 屏幕截图 以便稍后在 LaTeX 文档中使用 我希望这个屏幕截图是带有紧密边框的 PDF 矢量图形 gt pdflatex 我的意思是图表周围没有不必要的空白 我搜索了网络 搜索了 st
  • 如何从jquery移动动态页面中的按钮获取事件

    我使用jquery mobile创建了一个动态页面 创建此页面后如何获取事件 我还需要从此按钮发出警报 这是我的代码 test on click function var newPage div div h1 TEST h1 div div
  • Android:使用多维字符串数组作为列表

    在我的 android 列表页面 活动中 我有 2 个文本字段 一个主字段和一个子字段 一个在上面 但当它为它创建数组字符串时 我只看到带有一段文本的示例
  • R Studio - 全局环境中的数据在启动时自动加载 - 如何删除

    退出 R Studio 时 通常会提示我Save workspace image to RData 我不小心点击了Save在某些时候 现在当我打开 R Studio 时 我的全局环境会自动加载多个函数和数据集 现在 当我启动 R Studi
  • 来自远程目录的 Java Class.forName()

    我目前正在使用加载Java类Class forName 加载它 clazz Class forName interfaces MyClass 但现在我想从不同的目录加载类 我尝试通过设置类路径 clazz Class forName cp
  • 如何使用C++在后台跟踪剪贴板变化

    我需要在后台应用程序中处理剪贴板的内容 我怎样才能做到这一点 我需要一个每次更改剪贴板时都会调用的事件 应用程序从哪个位置复制并不重要 我知道阅读和写作的功能 例如GetClipboardData and SetClipboardData
  • git中远程仓库和集中仓库是同一个东西吗?

    它们似乎是同义词 但我还不能说清楚 基于 Subversion 与 DVCS 的争论here https softwareengineering stackexchange com questions 35074 im a subversi
  • PHP 7 和严格的“资源”类型

    PHP 7 支持资源的严格类型吗 如果是这样 怎么办 例如 declare strict types 1 ch curl init test ch function test resource ch 上面会报错 致命错误 未捕获类型错误 传