PHP の型制約の詳細な紹介 (コード付き)

不言
リリース: 2023-04-05 18:48:01
転載
2435 人が閲覧しました

この記事では、PHP の型制約について詳しく説明します (コード付き)。一定の参考値があります。困っている友人は参照してください。お役に立てれば幸いです。

はじめに: いわゆる型制約とは、変数を定義するときにその型を指定する必要があり、変数は今後この型のデータのみを格納できることを意味します。 PHP は弱い型指定言語ですが、オブジェクト、インターフェイス、配列などの型制約は PHP 5 ですでにサポートされており、PHP 7 以降ではスカラー型制約もサポートされています。

スカラー型、配列

パラメータに型を指定します。矛盾している場合は、キャッチ可能な致命的なエラーがスローされます

<?php

/**
 * 数组类型约束
 * @param array $arr
 */
function printArray(array $arr)
{
    echo implode(&#39;,&#39;, $arr);
}

printArray(array(1, 2, 3));// 1,2,3
printArray(&#39;1&#39;);// Fatal error: Uncaught TypeError: Argument 1 passed to printArray() must be of the type array, string given, called in D:\WWW\test.php on line 13 and defined in D:\WWW\test.php:7 Stack trace: #0 D:\WWW\test.php(13): printArray(&#39;1&#39;) #1 {main} thrown in D:\WWW\test.php on line 7
ログイン後にコピー

次のように上記では、スカラー型にも同じことが当てはまります。

<?php

/**
 * 标量类型约束
 * @param string $name
 * @param int $age
 * @param float $height
 * @param bool $isBoy
 */
function sayInfo(string $name, int $age, float $height, bool $isBoy)
{
    echo &#39;姓名:&#39; . $name . &#39;,年龄:&#39; . $age . &#39;,身高:&#39; . $height . &#39;,是否为男孩:&#39; . ($isBoy ? &#39;是&#39; : &#39;否&#39;);
}

sayInfo(&#39;tom&#39;, 12, 134.5, true);// 姓名:tom,年龄:12,身高:134.5,是否为男孩:是
ログイン後にコピー

オブジェクト、インターフェイス

型制約は、オブジェクトまたはインターフェイスとして指定することもできます。まず、Human インターフェイスを定義し、BoyGirl の 2 つのクラスがそれぞれそのインターフェイスを実装します。

<?php

/**
 * 接口
 * Interface Human
 */
interface Human
{
    public function say();

    public function run();
}

/**
 * 实现 Human 接口
 * Class Boy
 */
class Boy implements Human
{
    public function say()
    {
        echo &#39;a boy say&#39;;
    }

    public function run()
    {
        echo &#39;a boy run&#39;;
    }
}

/**
 * 实现 Human 接口
 * Class Girl
 */
class Girl implements Human
{
    public function say()
    {
        echo &#39;a girl say&#39;;
    }

    public function run()
    {
        echo &#39;a girl run&#39;;
    }
}
ログイン後にコピー

次に、テストする新しいクラスを作成します

<?php

include &#39;./human.php&#39;;

class Action
{
    /**
     * Boy 对象类型约束
     * @param Boy $boy
     */
    public function boySay(Boy $boy)
    {
        $boy->say();
    }

    /**
     * Girl 对象类型约束
     * @param Girl $girl
     */
    public function girlSay(Girl $girl)
    {
        $girl->say();
    }

    /**
     * Human 接口类型约束
     * @param Human $obj
     */
    public function humanRun(Human $obj)
    {
        $obj->run();
    }
}

$obj = new Action();
$obj->boySay(new Boy());// a boy say
echo '<br />';
$obj->girlSay(new Girl());// a girl say
echo '<br />';
$obj->humanRun(new Boy());// a boy run
echo '<br />';
$obj->humanRun(new Girl());// a girl run
ログイン後にコピー

型制約が特定のオブジェクト Boy または Girl の場合、必要なオブジェクトのみを渡すことができます。型制約がインターフェイス Human である場合、インターフェイスを実装するクラス Boy または Girl を渡すことができます。

【関連する推奨事項: PHP ビデオ チュートリアル ]

以上がPHP の型制約の詳細な紹介 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート