Php sử dụng không gian tên

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. Độ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

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();

11 năm trước

( Php 5 >= 5. 3. 0, Php 7, Php 8)

  1. Trước khi thảo luận về việc sử dụng các tên không gian, điều quan trọng là phải hiểu làm thế nào PHP biết tên phần tử nào được yêu cầu. Một sự đơn giản tương đồng có thể được thực hiện giữa PHP không gian tên và hệ thống tập tin. Có ba cách để truy cập một tệp trong hệ thống tệp
  2. Tên tệp tương thích với
    getName();
    2. Điều này giải quyết cho
    getName();
    3 nơi hiện tại là thư mục hiện đang bị chiếm dụng. Vì vậy, nếu thư mục hiện tại là
    getName();
    4, tên đã được giải quyết thành
    getName();
    5
  3. Tên đường dẫn tương đối như
    0. Điều này giải quyết đến
    1

The way path name as tuyệt vời

2. Điều này giải quyết thành
2
  1. Nguyên tắc tương tự có thể được áp dụng cho các yếu tố đặt tên trong PHP. Ví dụ, một tên lớp có thể được cập nhật theo ba cách. Một lưu ý. tên không đủ tiêu chuẩn cho các hàm và hằng số sẽ phân giải thành các hàm và hằng số chung nếu hàm hoặc hằng số được đặt tên không được xác định. Xem Sử dụng không gian tên. dự phòng cho chức năng/hằng số toàn cầu để biết chi tiết.
  2. Tên không đủ tiêu chuẩn, hoặc tên lớp không bị hủy như_
    4 hoặc
    5. Nếu không có tên hiện tại là
    6, điều này sẽ giải quyết thành
    7. Nếu mã là mã toàn cầu, không được ký tên, thì điều này sẽ giải quyết thành công
    8. A warning. Tên không đủ tiêu chuẩn cho các hàm và hằng số sẽ giải quyết cho các chức năng và hằng số toàn cầu nếu tên hàm hoặc hằng số không được xác định. Xem bằng cách sử dụng không gian tên. project project into function/hằng số toàn cầu để biết chi tiết
  3. Tên đủ điều kiện hoặc tên lớp có tiền tố như
    9 hoặc
    name;
        }
    }
    0. Nếu không có tên hiện tại là
    6, điều này sẽ giải quyết thành
    name;
        }
    }
    2. Nếu mã là mã toàn cầu, không được ký tên, thì điều này sẽ giải quyết thành công
    name;
        }
    }
    3