【 PHP 】PHP8に入門してみた 157日目 PHPの基本 ( ユーザー定義関数 globalとstaticをunset)

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

ユーザー定義関数

globalとstaticでのunsetは注意

globalstatic命令を行った変数では、unsetに注意が必要とのことです。

<!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
    $x = 10;

    function checkScope(): int
    {
        global $x;
        unset($x); // L14の$xが破棄されるわけではありません!
        return ++$x;
    }

    print checkScope() . "<br />";
    print $x . "<br />"; // L14の$xは健在です。


    function checkStatic(): void
    {
        static $x = 0;
        $x++;
        print "unset前 : {$x} " . "<br />";
        unset($x); // staticの衣がはがれた・・・というイメージでしょうか。
        $x = 13; // ただのローカル変数になりました。
        print "unset後 : {$x} " . "<br />";
    }

    checkStatic();
    checkStatic();


    ?>
</body>

</html>

 

メモ

globalstaticの鎧がなくなってただのローカル変数になるというイメージかなと思います。

PHPPHP

Posted by raika@blog