千家信息网

PHP7函数类型限定对性能有没有影响

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍PHP7函数类型限定对性能有没有影响,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP7函数类型限定(1) 介绍函数参数类型限定(包括返回值、成员属性)从PH
千家信息网最后更新 2026年11月02日PHP7函数类型限定对性能有没有影响

这篇文章主要介绍PHP7函数类型限定对性能有没有影响,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

PHP7函数类型限定

(1) 介绍
  • 函数参数类型限定(包括返回值、成员属性)从PHP5开始支持的,但是支持的类型不多,PHP7做了扩展:int/string/bool/object 等

  • 作用

    function testInt(int $intNum){  var_dump($intNum);}testInt("123"); // int(123)
    • 避免错误调用,标明类型,只能传递同类型的参数,尤其多人协同开发时。

      推荐学习:《PHP视频教程》

    • 如果不是可以自动转换数据类型,如下,当然前提是待转化类型可以正常转化

    • 而本文正是测试类型限定对性能的影响程度

  • 注意 参数、返回值如果跟设定的类型不一致时会报错,不是百分百确认的需要手动转化下

(2) 压测
  • 运行环境

    • PHP 7.2.34

    • Laravel 5.8

    • AB 2.3

  • 单机配置

    • 型号名称 MacBook Pro

    • 处理器名称 Quad-Core Intel Core i7

    • 内存 8 GB

    • 核总数 4

  • AB

    • -n 压测请求数

    • -c 并发数

    • -p POST请求时指定所需携带参数的文件

    • -r 遇到错误响应不退出,操作系统有防高并发攻击保护措施 (apr_socket_recv: Connection reset by peer)

    • 使用AB (Apache Benchmark) 进行压测,由于不是正式的压测,所以此处只关心综合指标:Requests per second (平均每秒请求数)

    • 主要参数

  • 设置项目 设置两个 POST 接口,没有业务逻辑、中间件操作等,如下

/***** 1 普通接口 *****/// CommonUserControllerpublic function createUser(Request $request){    $this->validate($request, [        'name' => 'required|string',        'age'  => 'required|integer',        'sex'  => ['required', Rule::in([1, 2])],    ]);    (new CommonUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? '');    return response()->json(['status' => 200, 'msg' => 'ok']);}// CommonUserModelpublic function createUser($sex, $age, $name, $address){    if(empty($sex) || empty($age) || empty($name))  return false;    // 省略DB操作    return true;}/***** 2 类型限定接口 *****/// TypeUserControllerpublic function createUser(Request $request): JsonResponse{    $this->validate($request, [        'name' => 'required|string',        'age'  => 'required|integer',        'sex'  => ['required', Rule::in([1, 2])],    ]);    (new TypeUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? '');    return response()->json(['status' => 200, 'msg' => 'ok']);}// TypeUserModelpublic function createUser(int $age, string $name, int $sex, string $address): bool{    if(empty($sex) || empty($age) || empty($name)){        return false;    }    // 省略DB操作    return true;}
(3) 实施
  • 共进行五次压测,配置及结果展示如下 (统一删除:| grep 'Requests per second')

/*****第一次*****/// 类型限定接口 rps=456.16ab -n 100  -c 10 -p '/tmp/ab_post_data.json' -T 'application:json'  http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=450.12ab -n 100  -c 10 -p '/tmp/ab_post_data.json' -T 'application:json'  http://www.laravel_type_test.com/api/common/create_user/*****第二次*****/// 类型限定接口 rps=506.74ab -n 1000  -c 100 -p '/tmp/ab_post_data.json' -T 'application:json'  http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=491.24ab -n 1000  -c 100 -p '/tmp/ab_post_data.json' -T 'application:json'  http://www.laravel_type_test.com/api/common/create_user/*****第三次*****/// 类型限定接口 rps=238.43 ab -n 5000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=237.16ab -n 5000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user/*****第四次*****/// 类型限定接口 rps=209.21ab -n 10000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=198.01ab -n 10000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user/*****第五次*****/// 类型限定接口 rps=191.17ab -n 100000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 普通接口 rps=190.55ab -n 100000  -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user
(4) 结果
  • 压测不算太严谨,结果仅供参考

  • 类型限定对性能的提升没有预期的大,很微小,不过还是推荐这种写法

以上是"PHP7函数类型限定对性能有没有影响"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

类型 接口 普通 参数 函数 性能 影响 结果 内容 名称 篇文章 错误 推荐 支持 配置 严谨 微小 一致 仅供参考 操作系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 南京欣网互联网络科技有限公司 工业互联网科技新基建 安徽鑫晟辉互联网科技 九亚互联网科技 深圳互联网科技怎么样 农村开互联网科技讲堂 茂名市互联网科技产业园 晓花互联网科技有限公司网址 互联网科技产业特征 互联网科技圈年度人物 国大互联网教育科技有限公司薪资 美国互联网科技实力 中天科技中国工业互联网 张召忠谈中国互联网科技 易企秀互联网科技是做什么的 科技互联网经济论坛 互联网科技大佬云集 安徽九吞吴互联网科技有限公司 科技发展第三阶段互联网时代 互联网金融与金融科技 喔噻互联网科技 江阴互联网智能科技产品进口 恒生互联网科技指数跳水 浙南科技城互联网大厦建设工程 上海创道互联网络科技有限公司 下一代互联网重大应用科技园 上海同邻互联网科技有限公司规模 广州智享互联网科技 恒生科技互联网指数十大成分股
0