Computer >> Máy Tính >  >> Lập trình >> PHP

Lớp học tự động tải PHP

Giới thiệu

Để sử dụng lớp được định nghĩa trong một tập lệnh PHP khác, chúng ta có thể kết hợp nó với các câu lệnh bao gồm hoặc yêu cầu. Tuy nhiên, tính năng tự động tải của PHP không cần bao gồm rõ ràng như vậy. Thay vào đó, khi một lớp được sử dụng (để khai báo đối tượng của nó, v.v.) trình phân tích cú pháp PHP sẽ tự động tải nó, nếu nó được đăng ký với spl_autoload_register () hàm số. Vì vậy, có thể đăng ký bất kỳ số lượng lớp học nào. Bằng cách này, trình phân tích cú pháp PHP có cơ hội lớn nhất để tải lớp / giao diện trước khi phát ra lỗi.

Cú pháp

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

Lớp sẽ được tải từ tệp .php tương ứng của nó khi nó được sử dụng lần đầu tiên

Ví dụ về tự động tải

Ví dụ này cho thấy cách một Lớp được đăng ký để tự động tải

Ví dụ

<?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";
?>

Đầu ra

Điều này sẽ tạo ra kết quả sau. -

objects of test1 and test2 class created successfully

Tuy nhiên, nếu không tìm thấy tệp .php tương ứng có định nghĩa clas, lỗi sau sẽ được hiển thị.

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

Tự động tải với xử lý ngoại lệ

Ví dụ

<?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";
}
?>

Đầu ra

Điều này sẽ tạo ra kết quả sau. -

Unable to load test1.