PHPオブジェクトの反復
はじめに
PHP 5以降では、オブジェクトのすべての表示可能なアイテムのリストを反復処理することができます。反復はforeachを使用して実行できます ループとイテレータ インターフェース。 IteratorAggregateもあります この目的に使用できるPHPのインターフェース
foreachループの使用
例
<?php class myclass{ private $var; protected $var1; public $x, $y, $z; public function __construct(){ $this->var="private variable"; $this->var1=TRUE; $this->x=100; $this->y=200; $this->z=300; } public function iterate(){ foreach ($this as $key => $value) { print "$key => $value\n"; } } } $obj = new myclass(); foreach($obj as $key => $value) { print "$key => $value\n"; } echo "\n"; $obj->iterate(); ?>
出力
出力は以下のとおりです-
x => 100 y => 200 z => 300 var => private variable var1 => 1 x => 100 y => 200 z => 300
イテレータインターフェイスの使用
このインターフェースは、次の例で実装される次の抽象メソッドを定義します
abstract public current ( void ) : mixed abstract public key ( void ) : scalar abstract public next ( void ) : void abstract public rewind ( void ) : void abstract public valid ( void ) : bool
Iterator ::current —現在の要素を返します
Iterator ::key —現在の要素のキーを返します
Iterator ::next —次の要素に進みます
Iterator ::rewind —イテレータを最初の要素に巻き戻します
Iterator ::valid —現在の位置が有効かどうかを確認します
次の例は、Iteratorインターフェースを実装することによるオブジェクトの反復を示しています
例
<?php class myclass implements Iterator{ private $arr = array('a','b','c'); public function rewind(){ echo "rewinding\n"; reset($this->arr); } public function current(){ $var = current($this->arr); echo "current: $var\n"; return $var; } public function key() { $var = key($this->arr); echo "key: $var\n"; return $var; } public function next() { $var = next($this->arr); echo "next: $var\n"; return $var; } public function valid(){ $key = key($this->arr); $var = ($key !== NULL && $key !== FALSE); echo "valid: $var\n"; return $var; } } $obj = new myclass(); foreach ($obj as $k => $v) { print "$k: $v\n"; } ?>
出力
上記のコードは次の結果を生成します-
rewinding valid: 1 current: a key: 0 0: a next: b valid: 1 current: b key: 1 1: b next: c valid: 1 current: c key: 2 2: c next: valid:
-
PHPのmethod_exists()関数
method_exists()関数は、クラスメソッドが存在するかどうかを確認します。 構文 method_exists(object, name_of_method) パラメータ オブジェクト −オブジェクトインスタンスまたはクラス名 name_of_method −メソッド名 戻る method_exists()関数は、method_nameで指定されたメソッドが指定されたオブジェクトに対して定義されている場合はTRUEを返し、それ以外の場合はFALSEを返します。 例 以下は例です- <?php $directory = new Directory('
-
PHPのget_object_vars()関数
get_object_var()関数は、指定されたオブジェクトのプロパティを取得します。指定されたオブジェクトに対して定義されたオブジェクトプロパティの連想配列を返します。 構文 get_object_vars(object) パラメータ オブジェクト −オブジェクトインスタンス。 戻る get_object_var()関数は、指定されたオブジェクトに対して定義されたオブジェクトプロパティの連想配列を返します。プロパティに値が割り当てられていない場合は、NULL値で返されます。 例 以下は例です- <?php class Point2D { &nb