【PHP8.x】STD_PROP_LIST定数の使い方

STD_PROP_LIST定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『STD_PROP_LIST定数は、ArrayObjectクラスの動作を制御するために使用されるフラグを表す定数です』

この定数は、ArrayObjectクラスのコンストラクタの第2引数に指定することで、インスタンスの反復処理に関する挙動を変更します。通常、ArrayObjectをforeachループなどで処理すると、内部に保持している配列の要素が順番に取り出されます。しかし、コンストラクタのフラグにSTD_PROP_LISTを指定してインスタンスを生成すると、この挙動が変わり、内部の配列データではなく、そのArrayObjectインスタンス自身が持つパブリックプロパティが反復処理の対象となります。これにより、オブジェクトのプロパティをキー、その値を値とするリストとして扱うことが可能になります。これは、通常のオブジェクトのプロパティをget_object_vars()関数で取得してループ処理する動作と似ています。ArrayObjectを配列のラッパーとしてだけでなく、固有のプロパティを持つオブジェクトとして扱い、そのプロパティを主体に処理を行いたい場合にこの定数を利用します。

構文(syntax)

1<?php
2
3// ArrayObjectのインスタンスを作成する際、第二引数のフラグに
4// ArrayObject::STD_PROP_LIST を指定します。
5$obj = new ArrayObject(
6    ['配列のデータ'], // このデータは反復処理の対象になりません
7    ArrayObject::STD_PROP_LIST
8);
9
10// オブジェクトにpublicプロパティを追加します
11$obj->property1 = 'プロパティの値1';
12$obj->property2 = 'プロパティの値2';
13
14// フラグの効果により、foreachは配列のデータではなく、
15// publicプロパティのリストを反復処理します。
16foreach ($obj as $key => $value) {
17    echo "{$key}: {$value}" . PHP_EOL;
18}
19
20/*
21実行結果:
22property1: プロパティの値1
23property2: プロパティの値2
24*/
25

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

ArrayObject::STD_PROP_LISTは、ArrayObject::get_object_vars() メソッドで、オブジェクトのプロパティを連想配列として取得する際のフラグとして使用されます。この定数を指定すると、protected および private プロパティも取得対象に含まれます。