Mối quan hệ của không gian tên và tự động tải tệp php là gì?

Nếu bạn mới sử dụng PHP hoặc đã viết mã được một thời gian, hầu hết chúng ta đều quen thuộc với các câu lệnh

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
2 hoặc
 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
3. Đó là một cách rất tiện dụng để chia logic của chúng ta thành các tệp riêng biệt. Bằng cách này, chúng tôi có thể giữ các tệp dưới 100 dòng mã. Trong khi voi ma mút rất tuyệt, hãy giữ cho nó nhỏ

Giả sử ban đầu chúng ta có một lớp Voi như thế này.
______04

 

class Elephant 
{

    public function trumpet(): void
    {
        echo 'bahruuuuuuhhhhaaaaa';
    }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Chúng ta có thể sử dụng lớp này trong một tệp khác.
______05

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tương tự, chúng tôi sẽ sử dụng

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
3 trong mỗi tệp cần mã từ một nơi khác. Chúng tôi sẽ cần phải làm điều này vì chúng tôi sẽ tập hợp một ban nhạc jazz của sở thú. Mỗi con vật sẽ phát ra âm thanh, vì vậy chúng tôi sẽ xây dựng một giao diện.
______07

________số 8

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, chúng ta sẽ làm cho Voi triển khai giao diện này thay vào đó, đồng thời tạo cả Hươu cao cổ.
______08

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
9

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đưa những con vật này vào một ban nhạc và để chúng biểu diễn là nhiệm vụ của Nhạc trưởng.
______80

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
4

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Và hãy tạo một nhạc trưởng và để nó biểu diễn cho chúng ta xem.
______05

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
6

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Việc kết hợp một ban nhạc sở thú vẫn rất dễ quản lý với require_once

Tự động tải và đề xuất

PSR-4 là Đề xuất Tiêu chuẩn PHP để tự động tải các lớp từ tệp. Tiêu chuẩn này cho phép xây dựng một triển khai tự động tải và để nó hoạt động trên bất kỳ cơ sở mã nào tuân theo nó. PSR-4 ra lệnh rằng các lớp được đặt trong một không gian tên và các không gian tên con tiềm năng. Không gian tên đầu tiên có thể là 'tên nhà cung cấp' của bạn. Trong ví dụ của chúng tôi, giả sử tên nhà cung cấp của chúng tôi là Ứng dụng. Chúng tôi không mong muốn phân phối mã của mình để sử dụng trong bất kỳ mã nào khác, vì vậy điều này là đủ. Mỗi tệp trừ chỉ mục của chúng tôi. php trong dự án của chúng ta cần được bổ sung không gian tên này ngay bên dưới tên viết tắt



interface AnimalSoundInterface
{
    public function getSound(): string;
}
2.
______83

Nếu chúng tôi chạy tệp



interface AnimalSoundInterface
{
    public function getSound(): string;
}
4 bây giờ, chúng tôi sẽ gặp lỗi nghiêm trọng.


interface AnimalSoundInterface
{
    public function getSound(): string;
}
5, mặc dù chúng ta có câu lệnh require_once. Mặc dù chúng tôi đang chuyển sang sử dụng tính năng tự động tải, nhưng đó là một hành trình nhỏ. Bây giờ chúng ta sẽ thấy mặt trái của việc khai báo một không gian tên cho các lớp của chúng ta. Trong


interface AnimalSoundInterface
{
    public function getSound(): string;
}
4 thêm một tuyên bố sử dụng

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Trên thực tế, hãy thêm câu lệnh sử dụng vào các tệp khác sử dụng câu lệnh yêu cầu



interface AnimalSoundInterface
{
    public function getSound(): string;
}
0

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
4

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình



interface AnimalSoundInterface
{
    public function getSound(): string;
}
8

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
6

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Chúng tôi đã sẵn sàng để xây dựng một trình tải tự động

Trình tải tự động

Trình tải tự động là một chức năng sẽ xem xét từng tệp trong dự án của chúng tôi và xác định xem nó có nên được tải hay không, theo cách chúng tôi đã sử dụng các không gian tên và sử dụng các câu lệnh

Ví dụ sau được lấy từ repo github php-fig/fig-standards, với những điều chỉnh nhỏ



interface AnimalSoundInterface
{
    public function getSound(): string;
}
9

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Về bản chất, trình tải tự động sẽ được gọi ở bất cứ nơi nào có tuyên bố sử dụng. Nó sẽ xem tên lớp đủ điều kiện và phân tích nó thành một câu lệnh yêu cầu. Điều này có nghĩa là các câu lệnh yêu cầu trong mã của chúng tôi có thể bị xóa. Vì vậy, hãy tiếp tục và xóa chúng khỏi



interface AnimalSoundInterface
{
    public function getSound(): string;
}
0,
 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
8,
 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
9. Dự án của chúng tôi vẫn yêu cầu MỘT câu lệnh yêu cầu mặc dù. Trong chỉ mục của chúng tôi. tệp php yêu cầu trình tải tự động

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
1

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đối với một dự án quy mô nhỏ, bạn có muốn triển khai trình tải tự động hay không là tùy thuộc vào bạn. Nếu bạn đang sử dụng Trình soạn thảo, trình quản lý gói cho PHP, thì bạn sẽ có quyền truy cập vào trình tải tự động của nó nếu bạn muốn. Cá nhân tôi nghĩ

 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
03 trông gọn gàng hơn
 

require_once 'Elephant.php';

$elephant = new Elephant();
$elephant->trumpet();

// Output: bahruuuuuuhhhhaaaaa
04. Nhưng nếu bạn đang xây dựng một dự án không có lớp, thì PSR-4 và tính năng tự động tải của nó sẽ không có ý nghĩa gì. Thay vào đó, hãy tiếp tục với yêu cầu

Mục đích chính của Namespaces trong PHP là gì?

Không gian tên là vòng loại giải quyết hai vấn đề khác nhau. Chúng cho phép tổ chức tốt hơn bằng cách nhóm các lớp làm việc cùng nhau để thực hiện một nhiệm vụ . Chúng cho phép sử dụng cùng một tên cho nhiều lớp.

Làm cách nào để tự động tải không gian tên trong PHP?

Tự động tải PHP 101. Để tạo trình tải tự động chỉ mất hai bước. Viết hàm tìm các tệp cần đưa vào . Đăng ký hàm đó với hàm PHP lõi spl_autoload_register() .

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.

Sự khác biệt giữa không gian tên và sử dụng trong PHP là gì?

Không gian tên là để tránh xung đột tên lớp, vì vậy bạn có thể có hai tên lớp giống nhau dưới hai không gian tên khác nhau. Sử dụng giống như PHP bao gồm . Vui lòng đăng nhập hoặc tạo tài khoản để tham gia vào cuộc trò chuyện này.