Deprecated: Optional parameter $scope declared before required parameter $total is implicitly treated as a required parameter in ……

来源:IT星空
访问量:39
发布日期:2023-02-16

php程序从7.X版本迁移到8.X如遇到以下提示:Deprecated: Optional parameter $scope declared before required parameter $total is implicitly treated as a required parameter in……


首先说明这不是php的bug,而是php版本升级后带来的向下不兼容的问题:
报错信息的意思是:

过时的:可选参数$scope在必选参数$total之前声明了作为必选参数是需要隐式处理的。


这句话听着还是不太理解,说白了,就是系统提示你:在一个函数的多个参数中,你把有默认值的参数(可选参数),放在在没默认值的参数(必选参数)之前了,这样写在php8之前可以,在php8+版本是不可以的。


在 PHP 8 中,添加了命名参数。这意味着从现在开始,没有默认值的参数必须在可选参数之前。


function getNames($scope = 2 , $total){  …… } 


$scope是可选参数,$total是必选参数,这种写法在PHP8之前可以,如果在php8+环境中,必须调换下顺序改成:


function getNames($total , $scope = 2){  …… }