【 PHP 】PHP8に入門してみた 151日目 PHPの基本 ( ユーザー定義関数 関数内関数の取り扱い)

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

ユーザー定義関数

関数が呼び出された初めて内側の関数が登録される

PHPでは関数の中に関数(インナー関数?)を定義できるようです。

このインナー関数は、外側の関数呼び出しが行われて初めて「関数」として使用可能になります。

<!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
    function hoge()
    {
        function getTriangleArea(float $base, float $height)
        {
            return $base * $height / 2;
        }
    }

    // この次点ではgetTriangleAreaは有効ではありません。
    // $area = getTriangleArea(8, 10);
    // print "三角形の面積は{$area}です";

    // この呼び出しでgetTriangleAreaが有効になります。
    hoge();

    $area = getTriangleArea(8, 10);
    print "三角形の面積は{$area}です" . "<br />";


    //条件分岐で関数定義を変えられます!
    $a = 1;
    if ($a == 1) {
        function hoihoi()
        {
            return 100;
        }
    } else {
        function hoihoi()
        {
            return 1;
        }
    }

    print hoihoi() . "<br />";

    ?>
</body>

</html>

 

メモ

これは面白い!

PHPPHP

Posted by raika@blog