从php5.2升级到php7.1是函数的参数问题

本文介绍了从PHP5.2升级到PHP7.1时遇到的一个关于静态方法参数的问题。在PHP7.1中,未提供足够的参数给静态方法会导致致命错误而非警告。通过为方法参数设置默认值可以解决此问题。
最近在做一个系统的ID管理系统php升级,从php5.2升级到php7.1,经常会遇到一些问题。今天遇到一个小问题,拿出来分享一下。废话少说,上示例代码。

SC.php
<?php
class
SC { static function out($str) { echo 'input str:' . $str; } } // 有参数调用 SC::out('one param'); // 无参数调用 SC::out();
  •  php5.2中的实行结果:
input str:one param
Warning: Missing argument 1 for SC::out(), called in C:\Users\colbe\Documents\SC.php on line 11 and defined in C:\Users\colbe\Documents\SC.php on line 4
input str:
  • php7.1中的实行结果:
input str:one param
Fatal error: Uncaught ArgumentCountError: Too few arguments to function SC::out(), 0 passed in C:\Users\colbe\Documents\SC.php on line 11 and exactly 1 expected in C:\Users\colbe\Documents\SC.php on line 4

ArgumentCountError: Too few arguments to function SC::out(), 0 passed in C:\Users\colbe\Documents\SC.php on line 11 and exactly 1 expected in C:\Users\colbe\Documents\SC.php on line 4

Call Stack:
0.0069 348536 1. {main}() C:\Users\colbe\Documents\SC.php:0
0.0088 348568 2. SC::out() C:\Users\colbe\Documents\SC.php:11

Warning变Fatal,直接就崩了。修改倒是很简单,给函数的参数加个默认值就可以了。修改一下方法的签名部分为`[static function out($str = null) {]`就可以了。再次运行,结果如下:

input str:one paraminput str:

我擦,才发现木加换行!就这样吧,太晚了,睡觉去了。



转载于:https://www.cnblogs.com/colbertwong/p/8620763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值