Lớp tải php từ tệp

Trong bài viết này, chúng ta sẽ thảo luận về những điều 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 tại sao tự động tải lại quan trọng như vậy và chỉ cho bạn cách sử dụng Composer để 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ải tự động khác nhau trong Composer

Tại sao chúng ta cần 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

6
9 hoặc

00.  

Các câu lệnh 

6
9 hoặc

00 này đều được 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
6
9 hoặc

00 ngày càng dài hơn, điều này hơi khó chịu và khó bảo trì. Một vấn đề khác với phương pháp 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 dung lượng 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à nơi tự động tải đế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 ở nơi 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 bao gồm tất cả các tệp thư viện theo cách thủ công;

Ở phần sau của bài viết này, chúng ta sẽ xem xét tính năng 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ể triển khai tự động tải trong PHP mà không cần Composer

Cách tự động tải hoạt động mà không cần trình soạn thảo

Bạn có thể không nhận ra, nhưng có thể triển khai tự động tải trong PHP mà không cần Trình soạn thảo. Hàm 


05 là hàm giúp điều này khả thi. Hàm

05 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ố 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 thức hoạt động của nó

1
_______1

0

1

2

3

4_______15

6
6

0

1

2

3

4

5

Trong ví dụ trên, chúng tôi đã đăng ký hàm


07 làm trình tải tự động tùy chỉnh của mình bằng cách sử dụng hàm

05. Tiếp theo, khi bạn cố gắng khởi tạo lớp

09 và nó chưa có sẵn, 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

10 đượ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ả sử lớp

09 được định nghĩa trong lib/FooBar. tập tin php

Nếu không tải tự động, bạn sẽ cần sử dụng câu lệnh

6
9 hoặc

00 để bao gồm tệp lớp

09. Việc triển khai trình tải tự động khá đơn giản trong ví dụ trên, nhưng bạn có thể xây dựng điều này bằng cách đăng ký nhiều trình tải tự động cho các loại lớp khác nhau

Trên thực tế, bạn sẽ không thường viết trình tải tự động của riêng mình, mặc dù. Đó 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 Trình soạn thảo để tự động tải trong PHP

Cách tự động tải hoạt động với Composer

Đầu tiên, đả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 Trình soạn thảo, có nhiều phương pháp khác nhau mà bạn có thể chọn

  • Lớp tải php từ tệp
    Lớp tải php từ tệp
    Lớp tải php từ tệp

    Trình soạn thảo cho PHP là gì và cách cài đặt nó

    Lớp tải php từ tệp
    Lớp tải php từ tệp
    Lớp tải php từ tệp

    Sajal Soni

    27 Tháng năm 2020

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

  1. tự động tải tập tin
  2. tự động tải bản đồ lớp
  3. Tự động tải PSR-0
  4. Tự động tải PSR-4

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 tôi sẽ trình bày chi tiết về điều đó trong phần tiếp theo. Trong phần này, chúng ta 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 xem nhanh 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 của Composer

  • Xác định nhà soạn nhạc. json trong thư mục gốc của dự án hoặc thư viện của bạn. Nó phải chứa chỉ thị dựa trên loại tải tự động
  • Chạy lệnh
    
    
    15 để tạo các tệp cần thiết mà Trình soạn thảo sẽ sử dụng để tự động tải
  • Bao gồm câu lệnh
    
    
    16 ở đầu tệp mà bạn muốn sử dụng tính năng tự động tải

tự động tải. Chỉ thị

Tự động tải tệp hoạt động tương tự như câu lệnh


00 hoặc
6
9 cho phép bạn tải toàn bộ tệp nguồn. Tất cả các tệp nguồn được tham chiếu với chỉ thị

17 sẽ được tải mỗi khi ứng dụng của bạn chạy. Điều này hữu ích để tải các tệp nguồn không sử dụng các lớp

Để sử dụng tính năng tự động tải tệp, hãy cung cấp danh sách các tệp trong chỉ thị


17 của nhà soạn nhạc. json, như được hiển thị trong đoạn mã sau

1
____17

0

9

2

01

4

03

6

5

Như bạn có thể thấy, chúng tôi có thể cung cấp danh sách các tệp trong chỉ thị


17 mà chúng tôi muốn tự động tải bằng Composer. Sau khi bạn tạo nhà soạn nhạc. json trong thư mục gốc của dự án với nội dung như trên, bạn chỉ cần chạy lệnh

15 để tạo các tệp autoloader cần thiết. Chúng sẽ được tạo trong thư mục nhà cung cấp. Cuối cùng, bạn cần thêm câu lệnh

16 ở đầu tệp mà bạn muốn tự động tải tệp bằng Composer, như minh họa trong đoạn mã sau

1
____1

0

09

2

11

4

13

6

5

Câu lệnh


16 đảm bảo rằng các tệp cần thiết được tải động.  

tự động tải. Chỉ thị

Tự động tải bản đồ lớp là phiên bản cải tiến của tính năng tự động tải tệp. Bạn chỉ cần cung cấp danh sách các thư mục và Composer sẽ quét tất cả các tệp trong các thư mục đó. Đối với mỗi tệp, Trình soạn thảo sẽ tạo một danh sách các lớp có trong tệp đó và bất cứ khi nào cần một trong các lớp đó, Trình soạn thảo sẽ tự động tải tệp tương ứng

Hãy nhanh chóng sửa lại nhà soạn nhạc. json để chứng minh trình tải tự động sơ đồ lớp

1
______17

0

9

2

21

4

03

6

5

Chạy lệnh


15 và Trình soạn thảo sẽ đọc các tệp trong thư mục lib để tạo bản đồ các lớp có thể được tải tự động

tự động tải. PSR-0

PSR-0 là tiêu chuẩn được đề xuất bởi nhóm PHP-FIG để tự động tải. Trong tiêu chuẩn PSR-0, bạn phải sử dụng không gian tên để xác định thư viện của mình. Tên lớp đủ điều kiện phải phản ánh cấu trúc


28. Ngoài ra, các lớp của bạn phải được lưu trong các tệp theo cùng cấu trúc thư mục với cấu trúc của các không gian tên

Hãy cùng xem tệp


29 sau đây

1
_______17

0

9

2

31

4

33

6

35
6

03

1

5

Trong tính năng tự động tải PSR-0, bạn cần ánh xạ các không gian tên tới các thư mục. Trong ví dụ trên, chúng tôi đang nói với Composer rằng mọi thứ bắt đầu bằng không gian tên


30 sẽ có sẵn trong thư mục src\Tutsplus\Library

Ví dụ, nếu bạn muốn định nghĩa lớp


31 trong thư mục src\Tutsplus\Library, bạn cần tạo thư mục src\Tutsplus\Library\Foo. php như được hiển thị trong đoạn mã sau

1
_______1

0

43

2

4

46

6

7
6

50

1

5

2

5

Như bạn có thể thấy, lớp này được định nghĩa trong không gian tên


30. Ngoài ra, tên tệp tương ứng với tên lớp. Hãy xem nhanh cách bạn có thể tự động tải lớp

31

1
______1

0

09

2

11

4

62

6

5

Composer sẽ autoload lớp


31 từ thư mục src\Tutsplus\Library

Vì vậy, đó là một lời giải thích ngắn gọn về tệp, sơ đồ lớp và tự động tải PSR-0 trong Trình soạn thảo. Trong phần tiếp theo, chúng ta sẽ xem cách hoạt động của tính năng tự động tải PSR-4

Cách PSR-4 Autoload hoạt động với Composer

Trong phần trước, chúng ta đã thảo luận về cách hoạt động của tính năng tự động tải PSR-0. PSR-4 tương tự như tự động tải PSR-0 ở chỗ bạn cần sử dụng các không gian tên, nhưng bạn không cần bắt chước cấu trúc thư mục với các không gian tên

Trong tính năng tự động tải PSR-0, bạn phải ánh xạ các không gian tên tới cấu trúc thư mục. Như chúng ta đã thảo luận trong phần trước, nếu bạn muốn autoload lớp


35, nó phải được đặt tại src\Tutsplus\Library\Foo. php. Trong tính năng tự động tải PSR-4, bạn có thể rút ngắn cấu trúc thư mục, dẫn đến cấu trúc thư mục đơn giản hơn nhiều so với tính năng tự động tải PSR-0

Chúng tôi sẽ sửa lại ví dụ trên—xem bạn có thể phát hiện ra sự khác biệt không

Đây là những gì nhà soạn nhạc. tệp json trông với tính năng tự động tải PSR-4

1
_______17

0

9

2
6
0

4
6
2

6

35
6

03

1

5

Điều quan trọng cần lưu ý là chúng tôi đã thêm dấu gạch chéo ngược ở cuối không gian tên. Ánh xạ trên cho Composer biết rằng mọi thứ bắt đầu bằng không gian tên


30 sẽ có sẵn trong thư mục src. Vì vậy, bạn không cần phải tạo thư mục Tutsplus và Thư viện. Ví dụ: nếu bạn yêu cầu lớp

35, Trình soạn thảo sẽ cố tải tệp src\Foo. tập tin php

Điều quan trọng là phải hiểu rằng lớp


31 vẫn được định nghĩa trong không gian tên

30; . src\foo. nội dung tệp php sẽ giống với nội dung của src\Tutsplus\Library\Foo. php trong phần trước

Như bạn có thể thấy, PSR-4 dẫn đến cấu trúc thư mục đơn giản hơn nhiều, vì bạn có thể bỏ qua việc tạo các thư mục lồng nhau trong khi vẫn sử dụng không gian tên đầy đủ

PSR-4 là cách tự động tải được đề xuất và nó được chấp nhận rộng rãi trong cộng đồng PHP. Bạn nên bắt đầu sử dụng nó trong các ứng dụng của mình nếu bạn chưa làm như vậy

Phần kết luận

Hôm nay, chúng ta đã thảo luận về tự động tải trong PHP. Bắt đầu với việc giới thiệu các loại kỹ thuật tải tự động Composer khác nhau, chúng tôi đã thảo luận chi tiết về các tiêu chuẩn tự động tải PSR-0 và PSR-4 trong nửa sau của bài viết

Học PHP với một khóa học trực tuyến miễn phí

Nếu bạn muốn học PHP, hãy xem khóa học trực tuyến miễn phí của chúng tôi về các nguyên tắc cơ bản của PHP

Lớp tải php từ tệp

Trong khóa học này, bạn sẽ học các nguyên tắc cơ bản của lập trình PHP. Bạn sẽ bắt đầu với những kiến ​​thức cơ bản, học cách PHP hoạt động và viết các hàm và vòng lặp PHP đơn giản. Sau đó, bạn sẽ xây dựng các lớp mã hóa để lập trình hướng đối tượng đơn giản (OOP)

Đồng thời, bạn sẽ học tất cả các kỹ năng quan trọng nhất để viết ứng dụng cho web. bạn sẽ có cơ hội thực hành phản hồi các yêu cầu GET và POST, phân tích cú pháp JSON, xác thực người dùng và sử dụng cơ sở dữ liệu MySQL

Làm cách nào để tải một lớp trong PHP?

PHP có thể tự động tải các tệp lớp theo yêu cầu (Không cần câu lệnh yêu cầu rõ ràng); . 2.

Làm cách nào để truy cập một lớp từ một tệp khác trong PHP?

Sử dụng bao gồm ("lớp. tên lớp. php");

Các lớp tự động tải trong PHP là gì?

Hàm spl_autoload_register() đăng ký bất kỳ số lượng trình tải tự động nào, cho phép các lớp và giao diện được tải tự động nếu chúng hiện chưa được xác định . Bằng cách đăng ký trình tải tự động, PHP có cơ hội cuối cùng để tải lớp hoặc giao diện trước khi lỗi xảy ra.

Tự động tải PHP hoạt động như thế nào?

Trình tải tự động PHP tìm kiếm đệ quy trong các thư mục đã xác định để biết định nghĩa lớp, đặc điểm và giao diện . Nếu không có bất kỳ cấu hình nào nữa, thư mục chứa tệp yêu cầu sẽ được sử dụng làm đường dẫn lớp mặc định. Tên tệp không cần tuân theo bất kỳ quy ước nào. Tất cả các tệp được tìm kiếm cho các định nghĩa lớp.