PHP中如何正确指定resource类型的参数?
PHP中如何正确指定resource类型的参数?
其实在PHP里,resource类型确实没法像int、string这类常规类型那样直接写在参数的类型声明里(也就是没法直接写成public function putBlob(resource $stream) {}),这是因为PHP的原生类型声明体系里并没有把resource纳入可直接声明的范畴。
不过你已经注意到PHP标准库的做法啦——没错,就是通过PHPDoc注释来标注参数的预期类型,像这样:
/** * @param resource $stream * * @return void */ public function putBlob(mixed $stream) {}
这种方式虽然没法在代码运行时强制限制参数类型,但至少能让你的IDE识别这个参数的预期类型,给开发过程提供代码提示、补全,还能帮你提前发现一些类型不匹配的问题。
如果想要在运行时确保传入的是合法的resource,你可以在函数内部加上类型检查逻辑,用PHP自带的is_resource()函数就行:
/** * @param resource $stream * * @return void */ public function putBlob(mixed $stream) { if (!is_resource($stream)) { throw new InvalidArgumentException('传入的参数必须是有效的resource类型'); } // 这里写你的业务逻辑代码 }
这样就能在代码运行时拦截不符合要求的参数,避免后续操作因为类型错误而出问题。
另外补充个小知识点:哪怕是PHP 8.0之后引入了联合类型,resource依然不能作为类型声明的一部分,所以目前最实用的方案就是注释标注+运行时检查结合起来用。
备注:内容来源于stack exchange,提问作者Simao Gomes Viana
相关产品推荐
相关产品推荐

