Không gian tên không hoạt động php

Khi một trang web trở nên lớn hơn, việc giữ tất cả các lớp tệp trong cùng một thư mục sẽ khó hơn. Ngoài ra, chúng ta phải sử dụng tên rất dài cho các tệp và lớp, Đó là một trở ngại trong quản lý mã nguồn. Không gian tên được giới thiệu để ngăn chặn vấn đề này. Chúng ta hãy xem nó hoạt động như thế nào

Giả sử chúng ta có cấu trúc tập tin như sau

class
	animals
		Dog.php
		Cat.php
		Goat.php
	birds
		Owl.php
		Peacock.php
	pets
		Dog.php
		Cat.php
	MainClass1.php
	MainClass2.php
	MainClass3.php

Trong cấu trúc thư mục mà bạn thấy có tệp Dog. php và Cat. php được lưu trong các thư mục khác nhau, chúng là các lớp khác nhau hoàn toàn nhưng sao chép lại tên,vậy làm sao để PHP biết bạn đang muốn gọi lớp nào khi thực hiện autoload, do đó chúng tôi sử dụng thêm không gian tên cho PHP

Đoạn mã trên hoạt động như thế nào?

Đầu tiên chúng ta định nghĩa autoload để tải các tệp trong lớp thư mục khi được gọi đến. Trong hàm này, chúng ta định nghĩa hàm str_replace thay thế tất cả dấu \ bằng DIRECTORY_SEPARATOR - 1 hằng số được định nghĩa trước đại diện cho dấu ngăn cách thư mục trong PHP ("\" cho Windows và "/" cho Linux). Tiếp theo nó sẽ bao gồm_một lần để tải các lớp khi được gọi đến. $_SERVER['DOCUMENT_ROOT'] chính là đường dẫn đến thư mục gốc của ứng dụng web

Do class dog và cat tồn tại 2 file giống nhau nên khi gọi bạn cần phải truyền namespace để PHP phân biệt chúng

Khai báo không gian tên

cú pháp

in which. Tên là tên của không gian tên Khi khai báo không gian tên thì chúng ta phải đặt nó ở phía trên cùng của tệp. Khi đã thiết lập không gian tên, chúng ta cần sử dụng không gian tên để lấy ra lớp như ví dụ trên. new Animal\Dog()Name là tên của không gian tên Khi khai báo không gian tên thì chúng ta phải đặt nó ở phía trên cùng của tệp. Khi đã thiết lập không gian tên, chúng ta cần sử dụng không gian tên để lấy ra lớp như ví dụ trên. Động vật mới\Chó()

name;
    }
}

Nạp không gian tên bằng từ khóa sử dụng

Đôi khi trong những ứng dụng lớn nhất, tốt nhất là khi bạn sử dụng khung cấu trúc thư mục cấu trúc sẽ rất phức tạp và không gian tên đó sẽ rất dài. Việc truyền full namespace khi gọi ra mỗi class sẽ làm cho code rất khó bảo trì và dài dòng do đó chúng ta sẽ sử dụng từ khoá use to load namespace trước hoặc định danh cho namespace, giúp code trở nên gọn gàng hơn

getName();
//kết quả: Tom

Ở đây thay vì phải truyền đầy đủ không gian tên vào từ khóa mới khi khởi động tạo đối tượng, bạn chỉ cần nhập tên lớp, PHP sẽ tự biết chỗ nhờ sử dụng phía trên để tải lớp Chó trong thư mục động vật

Định danh cho không gian tên

Khi không gian tên quá dài, bạn cũng có thể đặt lại tên cho nó rút ngắn cuộc gọi hơn bằng từ khóa theo cú pháp sau

use name_space_name as alias; 
getName();

Trong một dự án lớn có bao giờ bạn nghĩ đến trường hợp sẽ xảy ra các lớp trùng tên nhau không? . 3 trở đi thì PHP có hỗ trợ chức năng mới cho chúng ta

name;
    }
}
0. PHP5. 3 trở đi thì PHP có hỗ trợ cho chức năng mới của chúng ta là 
name;
    }
}
0

1, Không gian tên là  gì?

- Namespace giúp tạo ra một không gian tên cho hàm và lớp trong lập trình nói chung và trong PHP nói riêng

-Vì ở đây là series hướng đối tượng nên mình sẽ chỉ trình bày về namespace trong hướng đối tượng, trong hướng đối tượng thì namespace có tác dụng tạo ra định danh cho lớp một cách cụ thể hóa hơn

VD. như chúng ta có 2 tệp, mỗi tệp đều chứa một lớp và 2 lớp này lại có một điểm chung là trùng tên. Giờ đây khi bạn nhúng cả 2 tệp này vào và gọi lớp thì ngay lập tức chương trình sẽ thông báo lỗi. Để giải quyết điều đó, chúng ta cần khai báo không gian tên cho hai lớp đó (đọc tiếp để xem cách khai báo). như chúng ta có 2 tệp, mỗi tệp đều chứa một lớp và 2 lớp này lại có một điểm chung là trùng tên. Giờ đây khi bạn nhúng cả 2 tệp này vào và gọi lớp thì ngay lập tức chương trình sẽ thông báo lỗi. Để giải quyết điều đó, chúng ta cần khai báo không gian tên cho hai lớp đó (đọc tiếp để xem cách khai báo)

2, Không gian tên Khai báo

- Để khai báo không gian tên trong PHP chú ta sử dụng cú pháp sau. namespace trong PHP chú thích sử dụng cú pháp sau

________số 8

in which. Name is name of namespace. Name is name of namespace

Chú ý. khi khai báo không gian tên, chúng ta phải đặt nó ở phía trên cùng của tệp. Hơn nữa, nếu bạn muốn đặt tên không gian tên đúng chuẩn thì hãy tham khảo loạt tiêu chuẩn PHP. . khi khai báo không gian tên, chúng ta phải đặt nó ở phía trên cùng của tệp. Hơn nữa, nếu bạn muốn đặt tên không gian tên đúng chuẩn thì hãy tham khảo loạt tiêu chuẩn PHP.

VD

class Package
{
    public function sayHello()
    {
        echo 'Hello World!';
    }
}

-Và bạn cũng có thể hoàn toàn đặt tên không gian tên theo các cấp được cấp

VD. Tạo một lớp HomeController trong thư mục app\controllers and set namespace namespace as after. Tạo một lớp HomeController trong thư mục app\controllers and set namespace namespace as after

0

3, Gọi không gian tên

- Khi mà một lớp đã được định danh không gian tên thì bạn sẽ không thể gọi theo cách thông thường được nữa mà phải gọi với cú pháp

1

VD

-Tạo file ConNguoi. php has content as after. ConNguoi. php has content as after

0

-Tiếp theo đó tạo chỉ mục tệp. php same level with file ConNguoi. php và lúc này chúng ta sẽ phải gọi lớp ConNguoi như sau. mục lục. php same level with file ConNguoi. php và lúc này chúng ta sẽ phải gọi lớp ConNguoi như sau

1

Nạp không gian tên bằng cách sử dụng

-Nếu bạn không muốn gọi namespace theo cách trên thì bạn sử dụng từ khóa

name;
    }
}
1 to load theo cú pháp sau.
2

Chú ý. Khai báo nạp không gian tên cũng phải được đặt trên đầu của một tệp, nếu như trong một tệp có sử dụng không gian tên và sử dụng thì sử dụng sẽ được đặt dưới không gian tên. . Khai báo nạp không gian tên cũng phải được đặt trên đầu của một tệp, nếu như trong một tệp có sử dụng không gian tên và sử dụng thì sử dụng sẽ được đặt dưới không gian tên.

VD. Mình sẽ sử dụng để load namespace của class ConNguoi, khi đó file index. php will be write as after. Mình sẽ sử dụng để load namespace của class ConNguoi, khi đó file index. php will be write as after

3

VD. An file which has khai báo namespace and use thì will write as after. VD. An file which has khai báo namespace and use thì will write as after

4

4, Định danh cho namespace

-Giả sử không gian tên của chúng ta rất dài hoặc vì một lý do nào đó mà bạn không muốn gọi không gian tên là như thế, thì PHP cũng cung cấp cho chúng ta một phương pháp đó là tạo định danh cho không gian tên. không gian tên của chúng ta rất dài hoặc vì một lý do nào đó mà bạn không muốn gọi không gian tên là như thế, thì PHP cũng có cung cấp cho chúng ta một phương pháp đó là tạo định danh cho không gian tên

- To create new list for namespace in PHP we use from keyword

name;
    }
}
2 với cú pháp như sau.
5

VD. Tạo không gian tên danh danh cho ConNguoi ở trên. Tạo không gian tên danh danh cho ConNguoi ở trên

6

5, Nhiều không gian tên trong một tệp

-Như ở trên mình có nói là khi khai báo namespace thì chúng ta phải đặt ở file đầu, còn nếu như ở trong file có nhiều namespace thì chúng ta sẽ khai báo như sau

7

VD

-Tạo một lớp tập tin. php has content as after

8

-Và chúng ta sẽ tạo một chỉ mục tệp. php to call 2 class that as after

9

6, Lời Kết

-Như vậy mình đã trình bày xong về namespace trong PHP rồi, hy vọng mọi người có thể nắm chắc kiến ​​thức này để khi học các PHP framework như Laravel, Zend,. khỏi bỡ ngỡ. Bài tiếp theo chúng ta sẽ tìm hiểu về Trait trong PHP. namespace trong PHP rồi, hy vọng mọi người có thể nắm chắc kiến ​​thức này để học các PHP framework như Laravel, Zend,. khỏi bỡ ngỡ. Bài tiếp theo chúng ta sẽ tìm hiểu về Trait trong PHP