【 PHP 】PHP8に入門してみた 147日目 PHPの基本 ( ユーザー定義関数 許す!)

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

ユーザー定義関数

いろいろ許す!

関数の仮引数の指定において、イロイロ許容することができます。

nullを許す null許容型

型名の先頭に?をくっつけると「nullを代入することを許可する」という意味になります。

まずは?が無いバージョン

<!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(int $value)
    {
        var_dump($value);
    }

    hoge(null);

    ?>
</body>

</html>

次に?があるバージョンです。

<!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(?int $value)
    {
        var_dump($value);
    }

    hoge(null);

    ?>
</body>

</html>

問題なく処理が実施されました。

 

複数の型を許す Union型

複数の型を許すことができます。

<!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



    // stringもしくは浮動小数点数を渡します
    function getTriangleArea(string|float $base, string|float $height): float
    {
        return $base * $height / 2;
    }


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

</html>

メモ

Unionって・・・そもそも設計がうまくできていないのではないかと思ってしまいます。

PHPPHP

Posted by raika@blog