ホームページ  >  記事  >  バックエンド開発  >  PHPパラメータの型制限

PHPパラメータの型制限

WBOY
WBOYオリジナル
2016-06-23 13:09:431532ブラウズ

PHP も他の言語 (OC、Java) と同様にパラメーターの型チェックを導入しています。ただし、PHP には配列とオブジェクトの 2 つの限定された型しかありません。文字列や整数などの限定された型はありません。パラメーターの型制限は、インターフェイス、抽象クラス、関数、メソッドのいずれであっても、バージョン 5.3 以降で使用できますが、現在宣言できるのは配列オブジェクトのみです。

これの利点:

①: が可能です。調整されたコーディングでは、少なくともどのパラメータを渡すかを知るためにコメントやコードを見る必要はありません。

②: 受信オブジェクトの型宣言を使用します。

is_a -- オブジェクトの場合、受信オブジェクトが正当であるかどうかを識別するために関数内で is_a 関数を使用する必要はありません。クラスに属している、またはクラスがこのオブジェクトの親クラスは TRUE を返します

class User{     public $name;     public $password;     function __construct($name,$password){         $this->name=$name;         $this->password=$password;     } }//参数可以指定对象类型function f1(User $user){     echo $user->name,”,”,$user->password; }//参数可以指定数组类型function f2(array $arr){}//参数不可以指定基本类型,下面一句会出错function f3(string $s){}


わかりました、確認しましょう:

文字列が f1() 関数に渡されると、エラーが報告されます:

$a = 'xiaojun ';

$ret = f1($a);

エラー:

PHP キャッチ可能な致命的なエラー: f1() に渡される引数 1 は User のインスタンスである必要があります。指定された文字列、16 行目の /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code で呼び出され、11 行目の /tmp/f921205b-ef87-4aa8-b715-a131af661abd/code で定義されています

エラーの説明は非常に明確です。 User のインスタンス化を関数オブジェクトに渡す必要があります。

これは正しいです:

// 实例化对象,并初始化$user_obj = new User("kaiyi", '123456');$ret = f1($user_obj);



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。