【 PHP 】PHP8に入門してみた 216日目 PHPの基本 ( オブジェクト指向 マジックメソッド その3)

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

オブジェクト指向

マジック!その3

__call()メソッドは、オブジェクトに存在しないメソッドが呼び出された場合に自動的に呼び出され、
__callStatic()メソッドは、クラスに存在しない静的メソッドが呼び出された場合に自動的に呼び出されます。

MyClassというクラスを定義し、__call()と__callStatic()メソッドを定義しています。
$objというオブジェクトを生成し、$obj->myMethod()という存在しないメソッドを呼び出しています。
この場合、__call()メソッドが自動的に呼び出されます。

また、MyClass::myStaticMethod()という存在しない静的メソッドを呼び出しています。
この場合、__callStatic()メソッドが自動的に呼び出されます。

これらのマジックメソッドを使うことで、存在しないメソッドの呼び出しや存在しない静的メソッドの呼び出しを処理できるようになります。

<!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 MyClass
    {
        public function __call($name, $arguments)
        {
            echo "Calling method '$name' with arguments: " . implode(', ', $arguments) . "<br>";
        }

        public static function __callStatic($name, $arguments)
        {
            echo "Calling static method '$name' with arguments: " . implode(', ', $arguments) . "<br>";
        }
    }

    $obj = new MyClass();
    $obj->myMethod("arg1", "arg2"); // __call()メソッドが呼び出される

    MyClass::myStaticMethod("arg1", "arg2"); // __callStatic()メソッドが呼び出される
    ?>
</body>

</html>

 

 

メモ

Javaよりも全然柔軟ですね😆

PHPPHP

Posted by raika@blog