Arrayable メソッドを実装できるようにするための新しいマジック メソッドまたは新しいインターフェイスである PHP の新機能について、しばらく前に読んだことがあると思います。
例えば
interface Arrayable
{
public function toArray();
}
私はそれを想像していましたか?
Arrayable メソッドを実装できるようにするための新しいマジック メソッドまたは新しいインターフェイスである PHP の新機能について、しばらく前に読んだことがあると思います。
例えば
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 5.4 またはそれ以外) が PHP 内にありません。
PHP 5.4.0 でこのJsonSerializable
インターフェースが導入されました。
__toArray()
メソッドを提案するドラフト RFC (いくつかの関連するものの 1 つ) もあります。Request for Commentsを参照してください: Scalar Type Casting Magic Methods
おそらく、イテレータインターフェイスについて考えているでしょう。これを実装するクラスを作成すると、配列であるかのように反復処理できます。たとえば、 foreach() ループで使用できます。
他の事前定義されたインターフェースも見てください。
独自の配列可能なインターフェイスをいつでも作成でき、コメントでやりたいことを示したように、ヒントを入力するか、 instanceofで確認できます (例 #4 を参照) 。
これがあります(これはかなり役に立たないIMOです) http://php.net/manual/en/class.traversable.php
また、これ(これは便利ですが、使用する前に常に型チェックが必要です)
http://php.net/manual/en/function.iterator-to-array.php
しかし、オブジェクトから配列への変換を暗黙的に処理する方法はありません。