”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何克服 PHP 中对象数组的类型提示错误?

如何克服 PHP 中对象数组的类型提示错误?

发布于2024-11-09
浏览:272

How to Overcome Type Hinting Errors for Arrays of Objects in PHP?

克服对象数组的类型提示错误

在 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 库提供了更全面的解决方案,可处理自定义数组类型的成员资格要求检查,从而提供更大的灵活性。

版本声明 本文转载于:1729205835如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3