【 PHP 】PHP8に入門してみた 210日目 PHPの基本 ( オブジェクト指向 いろいろなオブジェクト操作 その2)

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

オブジェクト指向

オブジェクトの反復処理

オブジェクトをforeachで処理する場合、オブジェクトのpublicプロパティが順番に処理されます。
ちょっと面白いですね。
具体的には、オブジェクトの各プロパティが1回ずつforeachループ内で取得され、そのプロパティの値がループ内の変数に代入されます。

ただし、privateおよびprotectedプロパティはforeachで直接アクセスできないため、foreachループ内で取得することはできません。
こんなところでもアクセス県が関係するんですね。
これらのプロパティにアクセスするには、オブジェクト内のpublicなgetterメソッドを使用する必要があります。

また、オブジェクトがIteratorインターフェースを実装している場合、foreachループ内でオブジェクト自体を直接処理することができます。
Iteratorインターフェースを実装するオブジェクトは、内部的に反復処理に必要な情報を保持し、foreachループ内で次の値を取得できます。
Iteratorインターフェースを実装することにより、foreachループでのオブジェクトの処理をより柔軟にカスタマイズすることができます。

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>こんにちは!</title>
    <!-- Bootstrapを有効化 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
</head>

<body>
    <?php
    class Example
    {
        public $public_property = 'Public';
        protected $protected_property = 'Protected';
        private $private_property = 'Private';

        public function getProtectedProperty()
        {
            return $this->protected_property;
        }

        public function getPrivateProperty()
        {
            return $this->private_property;
        }
    }

    $example = new Example();
    foreach ($example as $key => $value) {
        echo "{$key}: {$value}\n";
    }



    ?>
</body>

</html>

 

メモ

本書でも記述されていますがクラスのプロパティを列挙するようなことってあまりありません。

PHPPHP

Posted by raika@blog