在 PHP 代码领域,人们可能会遇到对象数组的类型提示问题,特别是当参数传递给函数的应该是一个数组。这可能会导致致命错误,表明预期类型与提供的值之间不匹配。
解决此问题的一个解决方案是定义一个自定义数组类型,该类型扩展本机 \ArrayObject 并强制执行成员资格要求。例如,考虑 Foo 对象的以下自定义数组类型:
class ArrayOfFoo extends \ArrayObject {
public function offsetSet($key, $val) {
if ($val instanceof Foo) {
return parent::offsetSet($key, $val);
}
throw new \InvalidArgumentException('Value must be a Foo');
}
}
通过利用这个自定义数组类型,我们可以确保只允许 Foo 对象作为数组中的成员。下面是一个演示其用法的示例:
function workWithFoo(ArrayOfFoo $foos) {
foreach ($foos as $foo) {
// etc.
}
}
$foos = new ArrayOfFoos();
$foos[] = new Foo();
workWithFoo($foos);
此方法允许对对象数组进行严格的类型提示,防止引入无效值并确保代码的完整性。此外,Haldayne 库提供了更全面的解决方案,可处理自定义数组类型的成员资格要求检查,从而提供更大的灵活性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3