Autoload Classes With Composer in PHP (ok)

https://code.tutsplus.com/tutorials/how-to-autoload-classes-with-composer-in-php--cms-35649

Trong bài viết này, chúng ta sẽ thảo luận về những kiến thức cơ bản về tự động tải trong PHP và cách tự động tải các lớp PHP bằng Composer. Tôi sẽ giải thích lý do tại sao tự động tải lại quan trọng và chỉ cho bạn cách sử dụng Trình soạn thảo để tự động tải từng bước. Tôi cũng sẽ giải thích sự khác biệt giữa các loại tự động tải khác nhau trong Composer.

Why Do We Need Autoloading?

Khi bạn xây dựng các ứng dụng PHP, bạn có thể cần sử dụng các thư viện của bên thứ ba. Và như bạn đã biết, nếu bạn muốn sử dụng các thư viện này trong ứng dụng của mình, bạn cần đưa chúng vào tệp nguồn của mình bằng cách sử dụng câu lệnh request hoặc include.

Các câu lệnh yêu cầu hoặc bao gồm này đều tốt miễn là bạn đang phát triển các ứng dụng nhỏ. Nhưng khi ứng dụng của bạn phát triển, danh sách các câu lệnh request hoặc include ngày càng dài ra, điều này hơi phiền phức và khó duy trì. Vấn đề khác với cách tiếp cận này là bạn đang tải toàn bộ thư viện trong ứng dụng của mình, bao gồm cả những phần bạn thậm chí không sử dụng. Điều này dẫn đến bộ nhớ nặng hơn cho ứng dụng của bạn.

Để khắc phục vấn đề này, lý tưởng nhất là chỉ tải các lớp khi chúng thực sự cần thiết. Đó là lúc tính năng tự động tải lên. Về cơ bản, khi bạn sử dụng một lớp trong ứng dụng của mình, trình tải tự động sẽ kiểm tra xem nó đã được tải chưa và nếu chưa, trình tải tự động sẽ tải lớp cần thiết vào bộ nhớ. Vì vậy, lớp được tải nhanh chóng khi cần thiết — điều này được gọi là tự động tải. Khi bạn đang sử dụng tính năng tự động tải, bạn không cần phải đưa vào tất cả các tệp thư viện theo cách thủ công; bạn chỉ cần đưa vào tệp autoloader chứa logic của quá trình tự động tải và các lớp cần thiết sẽ được đưa vào động.

Ở phần sau của bài viết này, chúng ta sẽ xem xét tự động tải với Composer. Nhưng trước tiên, tôi sẽ giải thích cách bạn có thể thực hiện tự động tải trong PHP mà không cần Trình soạn thảo.

How Autoloading Works Without Composer

Bạn có thể không nhận ra điều đó, nhưng có thể thực hiện tự động tải trong PHP mà không cần Trình soạn thảo. Hàm spl_autoload_register () là thứ làm cho điều này trở nên khả thi. Hàm spl_autoload_register () cho phép bạn đăng ký các hàm sẽ được đưa vào hàng đợi để được kích hoạt tuần tự khi PHP cố gắng tải các lớp chưa được tải.

Hãy nhanh chóng xem qua ví dụ sau để hiểu cách hoạt động của nó.

<?php
function custom_autoloader($class) {
  include 'lib/' . $class . '.php';
}
 
spl_autoload_register('custom_autoloader');
 
$objFooBar = new FooBar();
?>

Trong ví dụ trên, chúng tôi đã đăng ký hàm custom_autoloader () làm trình tải tự động tùy chỉnh của chúng tôi bằng cách sử dụng hàm spl_autoload_register (). Tiếp theo, khi bạn cố gắng khởi tạo lớp FooBar và lớp này chưa khả dụng, PHP sẽ thực thi tuần tự tất cả các chức năng của trình tải tự động đã đăng ký. Và do đó, hàm custom_autoloader được gọi - nó bao gồm tệp lớp cần thiết, và cuối cùng đối tượng được khởi tạo. Đối với ví dụ này, chúng tôi giả định rằng lớp FooBar được định nghĩa trong tệp lib / FooBar.php.

Nếu không có tự động tải, bạn sẽ cần sử dụng câu lệnh request hoặc include để đưa vào tệp lớp FooBar. Việc triển khai autoloader khá đơn giản trong ví dụ trên, nhưng bạn có thể xây dựng dựa trên điều này bằng cách đăng ký nhiều autoloader cho các loại lớp khác nhau.

Tuy nhiên, trong thực tế, bạn sẽ không thường xuyên viết trình tải tự động của riêng mình. Đó là những gì Composer dành cho! Trong phần tiếp theo, chúng ta sẽ thảo luận về cách sử dụng Composer để tự động tải trong PHP.

How Autoloading Works With Composer

Trước tiên, hãy đảm bảo cài đặt Composer trên hệ thống của bạn nếu bạn muốn làm theo các ví dụ. Khi nói đến tự động tải với Composer, có nhiều phương pháp khác nhau mà bạn có thể chọn.

Cụ thể, Composer cung cấp bốn phương pháp khác nhau để tự động tải tệp:

  1. file autoloading

  2. classmap autoloading

  3. PSR-0 autoloading

  4. PSR-4 autoloading

Theo tài liệu chính thức của Nhà soạn nhạc, PSR-4 là cách tự động tải được khuyến nghị và chúng ta sẽ đi qua chi tiết điều đó trong phần tiếp theo. Trong phần này, chúng tôi sẽ thảo luận ngắn gọn về ba tùy chọn khác.

Trước khi tiếp tục, hãy nhanh chóng xem qua các bước bạn cần thực hiện khi muốn sử dụng tính năng tự động tải trong Trình soạn nhạc.

Xác định tệp composer.json trong thư viện gốc của dự án hoặc thư viện của bạn. Nó phải chứa các chỉ thị dựa trên loại tự động tải. Chạy lệnh composer dump-autoload để tạo các tệp cần thiết mà Composer sẽ sử dụng để tự động tải. Bao gồm câu lệnh require 'vendor/autoload.php' ở đầu tệp mà bạn muốn sử dụng tính năng tự động tải.

Autoloading: The files Directive

Last updated