16

Arrayable メソッドを実装できるようにするための新しいマジック メソッドまたは新しいインターフェイスである PHP の新機能について、しばらく前に読んだことがあると思います。

例えば

interface Arrayable
{
    public function toArray();
}

私はそれを想像していましたか?

4

4 に答える 4

23

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

于 2014-03-20T14:28:33.437 に答える
15

私はそれを想像していましたか?

はい。

  • 配列へのキャストを処理するためのインターフェイス (PHP 5.4 またはそれ以外) が PHP 内にありません。

  • PHP 5.4.0 でこのJsonSerializableインターフェースが導入されました。

  • __toArray()メソッドを提案するドラフト RFC (いくつかの関連するものの 1 つ) もあります。Request for Commentsを参照してください: Scalar Type Casting Magic Methods

于 2012-08-07T08:26:19.570 に答える
2

おそらく、イテレータインターフェイスについて考えているでしょう。これを実装するクラスを作成すると、配列であるかのように反復処理できます。たとえば、 foreach() ループで使用できます。

他の事前定義されたインターフェースも見てください。

独自の配列可能なインターフェイスをいつでも作成でき、コメントでやりたいことを示したように、ヒントを入力するか、 instanceofで確認できます (例 #4 を参照) 。

于 2012-08-07T08:08:14.707 に答える
2

これがあります(これはかなり役に立たないIMOです) http://php.net/manual/en/class.traversable.php

また、これ(これは便利ですが、使用する前に常に型チェックが必要です)

http://php.net/manual/en/function.iterator-to-array.php

しかし、オブジェクトから配列への変換を暗黙的に処理する方法はありません。

于 2012-11-23T14:28:33.650 に答える