PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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

  1. PHPで引数として静的メソッドを渡す

    is_callableで使用されるのと同じ構文 およびcall_user_func PHPで静的メソッドを引数として渡すために使用できます。 静的メソッドを渡すには、以下の例を使用できます- 例 <?php    function my_func() {       echo "Hello there!";    }    $variable_name = "my_func";    var_dump(is_callable($varia

  2. PHPの配列からコンストラクターに引数を渡す

    Reflection APIを使用して、配列からコンストラクターに引数を渡すことができます。 ReflectionClass ::newInstanceArgs 上記の行は、指定された引数から新しいクラスインスタンスを作成します- public ReflectionClass::newInstanceArgs ([ array $args ] ) : object 引数がコンストラクターに渡されると、クラスの新しいインスタンスが作成されます。ここで、argsは、クラスコンストラクターに渡す必要のある引数を指します。 例 <?php    $my_class =