【发布时间】:2014-08-05 21:42:19
【问题描述】:
我目前的任务是升级 PHP5 之前的代码库以符合现代运行时。
该库包含以下模式的多种用途:
$foo = new foo();
foreach($foo as &$ref) {
// Do something with $ref
}
根据 PHP 文档,从 PHP 5.2 开始这是非法的,并且会抛出异常 (http://php.net/manual/en/migration52.error-messages.php)
我的问题是,如何更改语法以保持相同的功能,同时符合 PHP 5.2+ 标准?如果我只是删除&符号就足够了吗?
$foo = new foo();
foreach($foo as $ref) {
// Do something with $ref
}
【问题讨论】:
-
$foo数组中保存了哪些类型的元素? -
任何可以迭代的对象 (php.net/manual/en/language.oop5.iterations.php)。
-
但是,由于所有这些代码都是 PHP5 之前的代码,是的,它当然只包含数组。我的错。
-
请注意,这段代码一般没有错;您似乎提到的错误仅适用于实现 iterators 的对象。普通对象应该仍然可以通过引用进行迭代。我认为这通常是一个糟糕的模式,你应该使用 getter 和 setter。
标签: php