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

PHP自動読み込みクラス


はじめに

別のPHPスクリプトで定義されたクラスを使用するために、includeステートメントまたはrequireステートメントを組み込むことができます。ただし、PHPの自動読み込み機能には、このような明示的な組み込みは必要ありません。代わりに、クラスが使用される場合(オブジェクトの宣言な​​ど)、PHPパーサーは、 spl_autoload_register()に登録されている場合、クラスを自動的にロードします。 働き。したがって、任意の数のクラスを登録できます。このようにして、PHPパーサーは、エラーを発行する前にクラス/インターフェースをロードする機会を最大限に得ることができます。

構文

spl_autoload_register(function ($class_name) {
   include $class_name . '.php';
});

クラスは、初めて使用するときに、対応する.phpファイルからロードされます

自動読み込みの例

この例は、クラスが自動読み込み用に登録される方法を示しています

<?php
spl_autoload_register(function ($class_name) {
   include $class_name . '.php';
});
$obj = new test1();
$obj2 = new test2();
echo "objects of test1 and test2 class created successfully";
?>

出力

これにより、次の結果が得られます。 −

objects of test1 and test2 class created successfully

ただし、クラス定義を持つ対応する.phpファイルが見つからない場合は、次のエラーが表示されます。

Warning: include(): Failed opening 'test10.php' for inclusion (include_path='C:\xampp\php\PEAR') in line 4
PHP Fatal error: Uncaught Error: Class 'test10' not found
>

例外処理を伴う自動ロード

<?php
spl_autoload_register(function($className) {
   $file = $className . '.php';
   if (file_exists($file)) {
      echo "$file included\n";
      include $file;
   } else {
      throw new Exception("Unable to load $className.");
   }
});
try {
   $obj1 = new test1();
   $obj2 = new test10();
} catch (Exception $e) {
   echo $e->getMessage(), "\n";
}
?>

出力

これにより、次の結果が得られます。 −

Unable to load test1.

  1. PHPのget_class_methods()関数

    get_class_methods()関数は、クラスメソッドの名前を取得します。 name_of_classで指定されたクラスに定義されたメソッド名の配列を返します。エラーの場合、NULLを返します。 構文 get_class_methods(class) パラメータ name_of_class −クラス名。必須です! 戻る get_class_methods()関数は、name_of_classで指定されたクラスに対して定義されたメソッド名の配列を返します。エラーの場合、NULLを返します。 例 以下は例です- <?php class Demo {   &n

  2. PHPのclass_exists()関数

    PHPのclass_exists()関数は、クラスが定義されているかどうかをチェックします。クラスが定義済みクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 構文 class_exists(class, autoload) パラメータ クラス −クラスの名前。 自動読み込み −デフォルトで__autoloadを呼び出すかどうか 戻る class_exists()関数は、クラスが定義されたクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 例 以下は例です- <?php if (class_exists('Demo'