PHP ArgumentCountError
はじめに
PHPパーサーは、ユーザー定義の関数またはメソッドに渡される引数がその定義内の引数よりも少ない場合、ArgumentCountErrorをスローします。 ArgumentCountError クラスはTypeErrorから継承されます クラス
ArgumentCountErrorの例
次の例では、2つの引数を受け取るようにユーザー定義関数add()が定義されています。ただし、呼び出し中に必要な数より少ない引数が指定された場合、引数CountErrorがスローされ、catchブロックで処理できます。
例
<?php function add($x, $y){ return $x+$y; } try{ echo add(10); } catch (ArgumentCountError $e){ echo $e->getMessage(); } ?>
出力
これにより、次の結果が生成されます-
Too few arguments to function add(), 1 passed in C:\xampp\php\test.php on line 6 and exactly 2 expected
次の例では、 setdata() myclassのメソッド 2つの正式な引数を持つように定義されています。このメソッドが少ない引数で呼び出されると、ArgumentCountExceptionがスローされます
例
<?php class myclass{ private $name; private $age; function setdata($name, $age){ $this->name=$name; $this->age=$age; } } try{ $obj=new myclass(); obj->setdata(); } catch (ArgumentCountError $e){ echo $e->getMessage(); } ?>
出力
これにより、次の結果が生成されます-
Too few arguments to function myclass::setdata(), 0 passed in C:\xampp\php\test.php on line 15 and exactly 2 expected
組み込み関数に不適切または無効な数の引数が指定された場合にも、ArgumentCountExceptionがスローされます。ただし、厳密なタイプ モードを設定する必要があります
例
<?php declare(strict_types = 1); try{ echo strlen("Hello", "World"); } catch (ArgumentCountError $e){ echo $e->getMessage(); } ?>
出力
これにより、次の結果が生成されます-
strlen() expects exactly 1 parameter, 2 given
-
PHPで引数として静的メソッドを渡す
is_callableで使用されるのと同じ構文 およびcall_user_func PHPで静的メソッドを引数として渡すために使用できます。 静的メソッドを渡すには、以下の例を使用できます- 例 <?php function my_func() { echo "Hello there!"; } $variable_name = "my_func"; var_dump(is_callable($varia
-
PHPの配列からコンストラクターに引数を渡す
Reflection APIを使用して、配列からコンストラクターに引数を渡すことができます。 ReflectionClass ::newInstanceArgs 上記の行は、指定された引数から新しいクラスインスタンスを作成します- public ReflectionClass::newInstanceArgs ([ array $args ] ) : object 引数がコンストラクターに渡されると、クラスの新しいインスタンスが作成されます。ここで、argsは、クラスコンストラクターに渡す必要のある引数を指します。 例 <?php $my_class =