Tạo tệp tự động tải PHP

Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách sử dụng Trình soạn thảo để tự động tải các lớp PHP từ các tệp bằng tiêu chuẩn PSR-4

Đang tải các lớp bằng cách sử dụng cấu trúc require_once

Đầu tiên, tạo cấu trúc thư mục sau với các tệp

. ├── app │ ├── bootstrap.php │ └── models │ └── User.php └── index.php

Code language: PHP (php)

Tệp

require_once 'models/User.php';

Code language: PHP (php)
2 trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
3 chứa lớp

require_once 'models/User.php';

Code language: PHP (php)
4

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)

require_once 'models/User.php';

Code language: PHP (php)
4 là một lớp đơn giản. Nó có hai thuộc tính

require_once 'models/User.php';

Code language: PHP (php)
6 và

require_once 'models/User.php';

Code language: PHP (php)
7. Hàm tạo khởi tạo các thuộc tính từ các đối số của nó. Ngoài ra, nó sử dụng hàm

require_once 'models/User.php';

Code language: PHP (php)
8 để băm

require_once 'models/User.php';

Code language: PHP (php)
7

Tệp

require_once 'models/User.php';

Code language: PHP (php)
00 sử dụng cấu trúc

require_once 'models/User.php';

Code language: PHP (php)
01 để tải lớp

require_once 'models/User.php';

Code language: PHP (php)
4 từ tệp

require_once 'models/User.php';

Code language: PHP (php)
2 trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
3

require_once 'models/User.php';

Code language: PHP (php)

Khi bạn có nhiều lớp hơn trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
3, bạn có thể thêm nhiều câu lệnh

require_once 'models/User.php';

Code language: PHP (php)
06 vào tệp

require_once 'models/User.php';

Code language: PHP (php)
00 để tải các lớp đó

Tệp

require_once 'models/User.php';

Code language: PHP (php)
08 tải tệp

require_once 'models/User.php';

Code language: PHP (php)
00 và sử dụng lớp

require_once 'models/User.php';

Code language: PHP (php)
4

require_once 'models/User.php';

Code language: PHP (php)
0

Cấu trúc ứng dụng này hoạt động tốt nếu bạn có một số lượng nhỏ các lớp. Tuy nhiên, khi ứng dụng có số lượng lớn các lớp, thì

require_once 'models/User.php';

Code language: PHP (php)
06 không mở rộng tốt. Trong trường hợp này, bạn có thể sử dụng hàm

require_once 'models/User.php';

Code language: PHP (php)
42 để tự động tải các lớp từ tệp của chúng

Vấn đề với hàm

require_once 'models/User.php';

Code language: PHP (php)
43 là bạn phải tự thực hiện các hàm autoloader. Và trình tải tự động của bạn có thể không giống như trình tải tự động do các nhà phát triển khác phát triển

Do đó, khi bạn làm việc với một codebase khác, bạn cần nghiên cứu các trình tải tự động trong codebase cụ thể đó để hiểu cách chúng hoạt động

Đây là lý do tại sao Composer ra đời

Giới thiệu về nhà soạn nhạc

Composer là một trình quản lý phụ thuộc cho PHP. Trình soạn thảo cho phép bạn quản lý các phụ thuộc trong dự án PHP của mình. Trong hướng dẫn này, chúng ta sẽ tập trung vào cách sử dụng Trình soạn thảo để tự động tải các lớp

Trước khi sử dụng Composer, bạn cần tải xuống và cài đặt nó. Tài liệu chính thức cung cấp cho bạn các bước chi tiết về cách tải xuống và cài đặt Composer trên máy tính của bạn

Để kiểm tra xem Composer đã cài đặt thành công hay chưa, bạn chạy lệnh sau từ Command Prompt trên Windows hoặc Terminal trên macOS và Linux

require_once 'models/User.php';

Code language: PHP (php)
4

Nó sẽ trả về phiên bản hiện tại và rất nhiều tùy chọn mà bạn có thể sử dụng với lệnh

require_once 'models/User.php';

Code language: PHP (php)
44

Tự động tải các lớp với Composer

Quay lại ví dụ trước, để sử dụng Composer, trước tiên bạn tạo một tệp mới có tên là

require_once 'models/User.php';

Code language: PHP (php)
45 trong thư mục gốc của dự án. Thư mục dự án sẽ trông như thế này

require_once 'models/User.php';

Code language: PHP (php)
9

Trong

require_once 'models/User.php';

Code language: PHP (php)
45, bạn thêm đoạn mã sau

require_once 'models/User.php';

Code language: PHP (php)
1

Mã này có nghĩa là Trình soạn thảo sẽ tự động tải tất cả các tệp lớp được xác định trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
47

Nếu bạn có các lớp từ các thư mục khác mà bạn muốn tải, bạn có thể chỉ định chúng trong mảng

require_once 'models/User.php';

Code language: PHP (php)
48

require_once 'models/User.php';

Code language: PHP (php)
4

Trong ví dụ này, Trình soạn thảo sẽ tải các lớp từ cả hai thư mục

require_once 'models/User.php';

Code language: PHP (php)
3 và

require_once 'models/User.php';

Code language: PHP (php)
90 trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
91

Tiếp theo, khởi chạy Command Prompt trên Windows hoặc Terminal trên macOS và Linux và điều hướng đến thư mục dự án

Sau đó, gõ lệnh sau từ thư mục dự án

require_once 'models/User.php';

Code language: PHP (php)
8

Trình soạn thảo sẽ tạo một thư mục có tên là

require_once 'models/User.php';

Code language: PHP (php)
92 chứa một số tệp như thế này

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
0

Tệp quan trọng nhất đối với bạn lúc này là tệp

require_once 'models/User.php';

Code language: PHP (php)
93

Sau đó, tải tệp

require_once 'models/User.php';

Code language: PHP (php)
93 trong tệp

require_once 'models/User.php';

Code language: PHP (php)
00 bằng cách sử dụng cấu trúc

require_once 'models/User.php';

Code language: PHP (php)
06

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
0

Cuối cùng, bạn có thể sử dụng lớp

require_once 'models/User.php';

Code language: PHP (php)
4 trong lớp

require_once 'models/User.php';

Code language: PHP (php)
08

require_once 'models/User.php';

Code language: PHP (php)
0

Từ bây giờ, bất cứ khi nào bạn có một lớp mới trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
3, bạn cần chạy lại lệnh

require_once 'models/User.php';

Code language: PHP (php)
10 để tạo lại tệp

require_once 'models/User.php';

Code language: PHP (php)
93

Ví dụ: phần sau định nghĩa một lớp mới có tên là

require_once 'models/User.php';

Code language: PHP (php)
12 trong tệp

require_once 'models/User.php';

Code language: PHP (php)
13 trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
3

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
2

Nếu bạn không chạy lệnh

require_once 'models/User.php';

Code language: PHP (php)
10 và sử dụng lớp

require_once 'models/User.php';

Code language: PHP (php)
12 trong tệp

require_once 'models/User.php';

Code language: PHP (php)
08, bạn sẽ gặp lỗi

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
3

Lỗi

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
4

Tuy nhiên, nếu bạn chạy lại lệnh

require_once 'models/User.php';

Code language: PHP (php)
10, tệp

require_once 'models/User.php';

Code language: PHP (php)
08 sẽ hoạt động bình thường

Trình soạn thảo tự động tải với PSR-4

PSR là viết tắt của Khuyến nghị tiêu chuẩn PHP. PSR là một đặc tả PHP được xuất bản bởi PHP Framework Interop Group hoặc PHP-FIG

Mục tiêu của PSR là cho phép khả năng tương tác của các thành phần PHP và cung cấp cơ sở kỹ thuật chung để triển khai các phương pháp hay nhất trong lập trình PHP

PHP-FIG đã xuất bản rất nhiều PSR bắt đầu từ PSR-0. Để có danh sách đầy đủ về PSR, hãy xem trang PSR

PSR-4 là tiêu chuẩn tự động tải mô tả thông số kỹ thuật cho các lớp tự động tải từ đường dẫn tệp. https. //www. php-fig. org/psr/psr-4/

Theo PSR-4, tên lớp đủ điều kiện có cấu trúc sau

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
5

Cấu trúc bắt đầu bằng một không gian tên, tiếp theo là một hoặc nhiều không gian tên phụ và tên lớp

Để tuân thủ PSR-4, bạn cần cấu trúc ứng dụng trước đó như thế này

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
6

Cấu trúc mới có những thay đổi sau

Đầu tiên, thư mục

require_once 'models/User.php';

Code language: PHP (php)
3 bị xóa

Thứ hai,

require_once 'models/User.php';

Code language: PHP (php)
2 nằm trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
42. Và lớp

require_once 'models/User.php';

Code language: PHP (php)
4 được đặt tên với

require_once 'models/User.php';

Code language: PHP (php)
42. Lưu ý cách các không gian tên ánh xạ tới cấu trúc thư mục. Điều này cũng giúp bạn tìm thấy một tệp lớp nhanh hơn bằng cách xem không gian tên của nó

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
7

Thứ ba,

require_once 'models/User.php';

Code language: PHP (php)
13 nằm trong thư mục

require_once 'models/User.php';

Code language: PHP (php)
46. Lớp

require_once 'models/User.php';

Code language: PHP (php)
12 có không gian tên

require_once 'models/User.php';

Code language: PHP (php)
48

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
8

Thứ tư, tệp

require_once 'models/User.php';

Code language: PHP (php)
45 trông giống như sau

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
9

Thay vì sử dụng

require_once 'models/User.php';

Code language: PHP (php)
48, tệp

require_once 'models/User.php';

Code language: PHP (php)
45 hiện sử dụng

require_once 'models/User.php';

Code language: PHP (php)
82.

require_once 'models/User.php';

Code language: PHP (php)
82 ánh xạ không gian tên

require_once 'models/User.php';

Code language: PHP (php)
84 vào thư mục

require_once 'models/User.php';

Code language: PHP (php)
85

Lưu ý rằng dấu gạch chéo ngược thứ hai (

require_once 'models/User.php';

Code language: PHP (php)
86) trong không gian tên

require_once 'models/User.php';

Code language: PHP (php)
87 được sử dụng để thoát khỏi dấu gạch chéo ngược đầu tiên (

require_once 'models/User.php';

Code language: PHP (php)
86)

Thứ năm, để sử dụng các lớp

require_once 'models/User.php';

Code language: PHP (php)
4 và

require_once 'models/User.php';

Code language: PHP (php)
12 trong tệp

require_once 'models/User.php';

Code language: PHP (php)
08, bạn cần chạy lệnh

require_once 'models/User.php';

Code language: PHP (php)
10 để tạo autoload. tập tin php

require_once 'models/User.php';

Code language: PHP (php)
8

Vì lớp

require_once 'models/User.php';

Code language: PHP (php)
4 và

require_once 'models/User.php';

Code language: PHP (php)
12 có namespace nên bạn cần có các câu lệnh

class User { private $username; private $password; public function __construct($username, $password) { $this->username = $username; $this->password = password_hash($password); } public function getUsername(): string { return $this->username; } }

Code language: PHP (php)
05 trong

require_once 'models/User.php';

Code language: PHP (php)
08 như sau

Tệp tự động tải trong PHP là gì?

Đó là bao gồm các tệp cần thiết cho ứng dụng của bạn mà không bao gồm nó một cách rõ ràng bằng các hàm include() hoặc require() . Tự động tải cho phép chúng tôi sử dụng các tệp PHP mà không cần yêu cầu () hoặc bao gồm () chúng và được coi là một dấu hiệu của lập trình hiện đại.

Tự động tải PHP ở đâu?

Tự động tải. php được trình soạn thảo tự động tạo khi các phụ thuộc được cài đặt hoặc cập nhật. Sau khi chạy trình soạn thảo cài đặt trong thư mục gốc của dự án, bạn sẽ tìm thấy thư mục nhà cung cấp/ chứa các phần phụ thuộc và trình tải tự động .

Tự động tải PHP Drupal là gì?

Mô-đun tự động tải - là tiện ích. Nó cho phép các mô-đun khác tận dụng khả năng tự động tải của lớp PHP5 theo một kiểu thống nhất . Yêu cầu. PHP5. 1.

Các lớp được tải trong PHP như thế nào?

Các lớp tải PHP được sử dụng để khai báo đối tượng của nó, v.v. trong các ứng dụng hướng đối tượng. Trình phân tích cú pháp PHP tự động tải nó nếu nó được đăng ký với hàm spl_autoload_register() . Trình phân tích cú pháp PHP có ít cơ hội nhất để tải lớp/giao diện trước khi phát ra lỗi.