読者です 読者をやめる 読者になる 読者になる

PHPのオブジェクトから配列へのキャスト

tech


「2.4.11キャスト演算子」からのメモ。


他の言語と同じように基本型であれば(int)や(string)を使うことで型を明示的に変換することができます。
一つだけ面白いなと思ったのはObjectをArrayに変換することができる点です。(逆もできます)

<?php
class Person
{
  public $name = "Fred";
  protected $age = 35;
  private $sex = "male";

  public function walk(){ echo "teku-teku"; }
}

$hoge = new Person;
print_r($hoge);

$foo = (array)$hoge;
print_r($foo);
echo $foo["name"]."\n";
echo $foo["*age"]."\n";
echo $foo["Personsex"]."\n";
?>
Person Object
(
    [name] => Fred
    [age:protected] => 35
    [sex:Person:private] => male
)
Array
(
    [name] => Fred
    [*age] => 35
    [Personsex] => male
)
Fred
PHP Notice:  Undefined index: *age in /home/h13i32maru/php/2.4.11_cast.php on line 18

PHP Notice:  Undefined index: Personsex in /home/h13i32maru/php/2.4.11_cast.php on line 19

publicな変数にはアクセスできるのですが、protectedとprivateな変数にはなぜかアクセスできません。PHPのサイトをみてもあまり詳しく書いてないので、わからないです。どなたか原因をしっているかたがいましたら教えてもらえると助かります。
PHP: 配列 - Manual