gpt4 book ai didi

php - 将对象转换为数组时如何返回特定值?

转载 作者:可可西里 更新时间:2023-10-31 23:06:47 25 4
gpt4 key购买 nike

有一个神奇的方法__toString,如果对象在字符串上下文中使用或强制转换为字符串上下文,则会触发该方法,例如

<?php 

class Foo {
public function __toString() {
return 'bar';
}
}

echo (string) new Foo(); // return 'bar';

是否有类似的函数会在将对象转换为(array) 时触发?

最佳答案

没有,但是有 ArrayAccess接口(interface),它允许您将类用作数组。要获得类似 foreach 的循环功能,您需要连接 IteratorAggregateIterator .如果你有一个正在使用的内部数组,前者更容易使用,因为你只需要覆盖一个方法(它提供了一个实例 ArrayIterator ),但后者允许你对迭代进行更精细的控制。

例子:

class Messages extends ArrayAccess, IteratorAggregate {
private $messages = array();

public function offsetExists($offset) {
return array_key_exists($offset, $this->messages);
}

public function offsetGet($offset) {
return $this->messages[$offset];
}

public function offsetSet($offset, $value) {
$this->messages[$offset] = $value;
}

public function offsetUnset($offset) {
unset($this->messages[$offset]);
}

public function getIterator() {
return new ArrayIterator($this->messages);
}
}

$messages = new Messages();
$messages[0] = 'abc';
echo $messages[0]; // 'abc'

foreach($messages as $message) { echo $message; } // 'abc'

关于php - 将对象转换为数组时如何返回特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com