PHP中函数参数为类名形式的含义及检索方法咨询
PHP中函数参数为类名形式的含义及检索方法咨询
嘿,我来帮你把这个问题掰扯清楚!
首先看你贴的这段代码:
public function scopeFilter(Builder $builder, array $filter) { /**/ }
里面的Builder $builder这种写法,在PHP里叫做类型提示(Type Hinting),也常被称为类型声明。它的核心作用就是给参数“定规矩”:调用这个scopeFilter方法时,传入的第一个参数必须是Builder类(或者它的子类、实现的接口,如果是接口类型的话)的实例,绝对不能是字符串、数字这种不相关的类型,甚至不能是其他类的对象。
举个实际的例子,你这个方法看起来是Laravel框架里的查询作用域,这里的Builder就是Laravel自带的查询构建器类。用了这个类型提示后,不仅IDE能给你精准的代码补全(比如提示$builder能调用where、orderBy这些方法),PHP在运行时也会自动检查参数类型——要是你传错了类型,直接就会抛出错误,帮你提前排查问题,让代码更严谨。
然后说说怎么谷歌才能搜到相关内容:
- 用英文搜的话,关键词可以是
PHP function parameter class name type hint,如果结合你的Laravel场景,还能搜Laravel scope function parameter class type,精准定位框架相关的用法 - 用中文搜的话,直接用
PHP 函数参数 类名 类型提示或者Laravel 查询作用域 参数类名就好
之前搜不到大概率是没用到“类型提示”这个准确术语,用官方叫法搜,相关的文档、教程、问答一下子就出来啦。
另外补充个小知识点:PHP从5.0版本就支持类和接口的类型提示了,后来慢慢扩展到数组、标量类型(int、string这类),现在PHP 8还支持联合类型、交集类型这些更灵活的写法,都是为了让类型检查更完善。
备注:内容来源于stack exchange,提问作者document text




