Các autoloader PHP chỉ là một cơ chế để bao gồm một tập tin khi một lớp được xây dựng.
Nếu bạn đặt tất cả các lớp học của mình trong 1 tệp, bạn không cần trình tải tự động. Tất nhiên, khi lập trình OO bạn cung cấp cho mỗi lớp tập của riêng mình, và thats nơi autoloader do thỏa thuận hợp
Một số ví dụ:.
class AutoLoader
{
public function __construct()
{
spl_autoload_register(array($this, 'ClassLoader'));
}
public function ClassLoader($class)
{
if(class_exists($class, false))
return true;
if(is_readable('path_to_my_classes/' . $class . '.php'))
include_once 'path_to_my_classes/' . $class . '.php'
}
}
$autoloader = new AutoLoader();
gì xảy ra ở đây là khi lớp autoloader được tạo ra, lớp phương thức Trình nạp lớp được đăng ký làm bộ nạp tự động.
Khi tạo lớp mới, trước tiên phương pháp nạp lớp là tệp cho lớp đã được tải. Nếu không, lớp được thêm vào trước với một đường dẫn và mở rộng với phần mở rộng. Nếu tập tin có thể đọc được, nó được bao gồm.
Tất nhiên, bạn có thể thực hiện điều này rất phức tạp. Hãy xem một ví dụ với các không gian tên và một người lập bản đồ. Giả sử chúng ta đang ở trong lớp tự động tải:
private $mapper array('Foo' => 'path_to_foo_files/', 'Bar' => 'path_to_bar_files/');
public function ClassLoader($class)
{
if(class_exists($class, false))
return true;
// break into single namespace and class name
$classparts = explode('\\', $class);
$path = $this->mapper[$classparts[0]];
if(is_readable($path . $classparts[1] . '.php'))
include_once $path . $classparts[1] . '.php'
}
Ở đây, tên lớp được tách trong phần không gian tên và một phần tên lớp. Phần không gian tên được tìm kiếm trong một mảng bản đồ, và đường dẫn đó sau đó được sử dụng như một đường dẫn bao gồm cho tệp php.
Đây chỉ là những ví dụ để chứng minh những gì có thể được thực hiện với trình tải tự động. Đối với sản xuất có nhu cầu một số công việc nhiều hơn để được thực hiện, kiểm tra lỗi ví dụ.
có vẻ như liên kết trong câu hỏi của bạn đủ tốt để biết –
"Trình tải tự động lớp học php có mở tệp và kiểm tra tên lớp không?" - nó tìm kiếm tất cả các lớp trong một tập tin. – zerkms
nhưng ở đâu tôi có thể biết làm thế nào nó được thực hiện, từ đầu toàn bộ quá trình nạp tự động này là những gì là thú vị với tôi như thế nào đầu tiên của nó bằng văn bản – meWantToLearn