PHPに関して、オブジェクトプロパティの順序を変更する方法はありますか?PHP:オブジェクトプロパティの順序を変更する
class o {public $a = 1, $b = 2;}
$o = new o;
foreach (get_object_vars($o) as $k => $v) {
print $k . '->' . $v . PHP_EOL;
}
出力:
a->1
b->2
既存のパブリック変数をunset()
することができ、例えば追加$o->c = 3;
となります。しかし、array functionsはオブジェクトでは動作しません。オブジェクトをいくつかのstdClassに変換する必要はありません。
考えられる唯一の実用的な回避策は、配列オブジェクトを装飾し、魔法の__get()
と__set()
メソッドをオーバーロードすることですが、それは解決策ではなく解決策に過ぎません。
をご確認私は '__invoke'を使用して解決策を掲載していたが、誰かがdownvoted、あなたがそのようにそれをやってみたいいけません。 –
__invokeはこの目的のために使用されるべきではありません –
私の答えをチェックしてください - 私はそれを編集し、ArrayObjectインターフェイスについての言及を追加しました –