我确信我不久前读到了 PHP 的一个新特性,它要么是一种新的魔法方法,要么是一种新的接口,以便您可以实现 Arrayable 方法。
例如
interface Arrayable
{
public function toArray();
}
是我想象的吗?
我确信我不久前读到了 PHP 的一个新特性,它要么是一种新的魔法方法,要么是一种新的接口,以便您可以实现 Arrayable 方法。
例如
interface Arrayable
{
public function toArray();
}
是我想象的吗?
它不在 PHP 本身中,但 Laravel 有一个专门用于此目的的接口:
<?php namespace Illuminate\Contracts\Support;
interface Arrayable {
/**
* Get the instance as an array.
*
* @return array
*/
public function toArray();
}
注意:在 Laravel v4 中,命名空间是Illuminate\Support\Contracts
,接口名称是ArrayableInterface
.
是我想象的吗?
是的。
PHP 中没有用于处理转换为数组的接口(PHP 5.4 或其他)。
PHP 5.4.0 引入了JsonSerializable
接口,也许你在想这个?
还有一个 RFC 草案(几个相关的一个)建议了一种__toArray()
方法;请参阅征求意见:标量类型转换魔术方法
您可能正在考虑迭代器接口。如果您创建一个实现它的类,您可以像它是一个数组一样对其进行迭代。例如,您可以在 foreach() 循环中使用它。
另请查看其他预定义接口。
您始终可以编写自己的可数组接口,然后您可以输入提示或使用instanceof进行检查(参见示例 #4),正如您在评论中指出的那样。
有这个(这是相当无用的IMO) http://php.net/manual/en/class.traversable.php
还有这个(它确实派上用场,但在使用之前总是需要进行类型检查)
http://php.net/manual/en/function.iterator-to-array.php
但是没有办法隐式地处理对象到数组的转换。