PHPメモ①(オブジェクトの反復処理)

hoge.php

<?php
class MyClass {

  public string $pub = 'public';
  protected string $pro = 'protected';
  private string $pri = 'private';

  public function showProperty() : void {
    foreach ($this as $key => $value) {
      print "キーは{$key}、バリューは{$value} <br />";
    }
  }
}
fuga.php

<?php
require_once 'hoge.php';

$myclass = new MyClass();


//①foreachメソッドを使ってオブジェクトのプロパティを直接取り出す
foreach ($myclass as $key => $value) {
  print "キーは{$key}、バリューは{$value} <br />";
}
//=> キーはpub、バリューはpublic

//②MyClassに定義してあるshowProperty()メソッドを使って、プロパティを取り出す
$myclass->showProperty();
//=> キーはpub、バリューはpublic
//   キーはpro、バリューはprotected
//   キーはpri、バリューはprivate

//③オブジェクトを配列にキャストして、配列として出力
$arr = (array)$myclass;
print $arr['pub'];
//=> public
print $arr['pri'];
//=> エラー(アクセス不可能)