将list()与PHP中的对象一起使用

时间:2016-07-13 16:02:18

标签: php list casting

我想将list()语句与对象结合使用。

$tuple = new Tuple();
// ..
list ($guestbook, $entry, $author) = $tuple;

如果$tuple是一个包含三个元素的数组,这将有效。但它是一个对象。

有没有办法不使用Tuple(返回那种数组)的方法,比如实现一个我还不知道的花哨的原生界面?

3 个答案:

答案 0 :(得分:1)

见上一篇文章: Convert PHP object to associative array

我假设(我没有测试过)你可以这么做:

$tuple = new Tuple(); list ($guestbook, $entry, $author) = (array) $tuple;

答案 1 :(得分:1)

您可以实现接口ArrayAccess来执行此操作:

class Tuple implements ArrayAccess {
  private $arr;

  public function __construct($arr) {
    $this->arr = $arr;
  }

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

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

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

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

$tuple = new Tuple([1, 2, 3]);

list($am, $stram, $gram) = $tuple;

echo $am;
echo $stram;
echo $gram;

// outputs: 123

答案 2 :(得分:0)

你可以这样做:

$tumple = new Tumple();
$properties = get_object_vars($tumple);// ["guestbook" => "Feel", "entry" => "Good", "author" => "Inc"];