Lớp không gian tên trong PHP là gì?

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các không gian tên PHP, cách xác định các lớp thuộc về một không gian tên và cách sử dụng các không gian tên

Tại sao không gian tên

Khi dự án của bạn trở nên phức tạp hơn, bạn sẽ cần tích hợp mã từ những người khác. Không sớm thì muộn, bạn sẽ thấy rằng mã của mình có các lớp khác nhau có cùng tên. Vấn đề này được gọi là xung đột tên

Để giải quyết nó, bạn có thể sử dụng không gian tên. Không gian tên được PHP hỗ trợ kể từ phiên bản 5. 3

Không gian tên là gì

Không gian tên dễ hiểu hơn bằng cách tương tự với cấu trúc thư mục trong hệ thống tệp

Một thư mục lưu trữ các tệp liên quan, tương tự như một không gian tên nhóm các lớp liên quan

Một thư mục không cho phép bạn có hai tệp có cùng tên. Tuy nhiên, bạn có thể có các tệp có cùng tên trong các thư mục khác nhau. Tương tự như vậy, các không gian tên bắt chước cùng một nguyên tắc

Theo định nghĩa, các không gian tên cung cấp cho bạn một cách để nhóm các lớp có liên quan và giúp bạn tránh mọi xung đột tên có thể xảy ra

Không gian tên không giới hạn trong các lớp nhóm. Họ có thể nhóm các định danh khác, bao gồm hàm, hằng, biến, v.v.

Thiết lập cấu trúc thư mục

Đầu tiên, tạo một thư mục dự án, e. g. ,

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
2 và tạo một tệp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
3 mới trong thư mục

Thứ hai, tạo thư mục

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
4 trong thư mục dự án và thư mục

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
5 trong thư mục

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
4

Thứ ba, tạo một tệp mới có tên là

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
7 trong thư mục

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
5 với mã sau

class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)

Thư mục trông giống như sau

________số 8

Xác định một không gian tên

Để xác định một không gian tên, bạn đặt từ khóa

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
9 theo sau là một tên ở đầu trang. Ví dụ sau cung cấp lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
00 với không gian tên

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
01

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
  • Thông lệ gán cho thư mục

    namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

    Code language: HTML, XML (xml)
    4 không gian tên

    namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

    Code language: HTML, XML (xml)
    03. Và bạn có thể thay thế

    namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

    Code language: HTML, XML (xml)
    03 bằng tên thương hiệu của bạn, e. g. , Quả táo
  • Đó là một cách thực hành tốt để bắt chước cấu trúc thư mục với không gian tên để tìm các lớp dễ dàng hơn. Ví dụ: mọi lớp trong thư mục sẽ nhận không gian tên

    namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

    Code language: HTML, XML (xml)
    01

Sử dụng một lớp thuộc về một không gian tên

Để sử dụng một lớp thuộc về một không gian tên trong

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
3, bạn cần bao gồm tệp và sử dụng lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
0

Nếu bạn mở

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
3, bạn sẽ gặp một lỗi nghiêm trọng

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
0

Vì lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
00 hiện được đặt tên, bạn cần sử dụng tên đủ điều kiện bao gồm không gian tên như thế này

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
2

Bây giờ, nó sẽ hoạt động bình thường

Nhập một không gian tên

Để tránh sử dụng các tên đủ điều kiện từ một không gian tên, bạn có thể nhập không gian tên bằng toán tử

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
09 như thế này

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
4

Bây giờ, bạn chỉ cần thêm tiền tố vào tên lớp là

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
5

Nhập một lớp từ một không gian tên

PHP cho phép bạn nhập một lớp từ một không gian tên thay vì nhập không gian tên. Ví dụ

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
6

Trong ví dụ này, chúng tôi sử dụng toán tử

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
09 để nhập lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
00 từ không gian tên

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
01. Do đó, chúng ta không phải đặt tiền tố tên lớp với không gian tên

Nhập nhiều lớp từ một không gian tên

Đầu tiên, tạo một tệp mới có tên là

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
04 trong thư mục

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
05

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
2

Đối với mục đích trình diễn, lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
06 trống. Bây giờ, cấu trúc thư mục trông giống như sau

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
4

Để sử dụng cả hai lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
00 và

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
06 từ

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
3, bạn có thể nhập chúng riêng lẻ như trước đây

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
0

Khi số lượng các lớp được nhập tăng lên, mã của bạn sẽ trở nên dài dòng hơn. Vì vậy, thay vì nhập từng lớp riêng lẻ, bạn có thể nhập tất cả các lớp bằng một câu lệnh

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
1

Ví dụ

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
2

Các lớp bí danh từ một không gian tên

Đầu tiên, tạo một thư mục mới có tên là

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
20 trong thư mục dự án và đặt một tệp mới

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
21 trong thư mục

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
20 với mã sau

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
3

Thứ hai, tạo một thư mục mới

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
23 trong thư mục dự án và tạo một Logger mới. php trong thư mục

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
23

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
4

Bây giờ, bạn có hai lớp có cùng tên trong các không gian tên khác nhau

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
5

Thứ ba, nhập các lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
25 từ cả hai không gian tên

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
26 và

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
27 vào tệp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
3

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
6

PHP gây ra lỗi sau

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
7

Để tránh điều này, bạn chỉ cần nhập các không gian tên

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
8

Hoặc bạn có thể đặt bí danh cho một lớp khi nhập nó

. ├── index.php └── src └── Model └── Customer.php

Code language: plaintext (plaintext)
9

Ví dụ sau gán bí danh lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
29 cho lớp

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
40

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
0

Sử dụng các lớp từ không gian tên chung

Để sử dụng các lớp toàn cục, chẳng hạn như các lớp dựng sẵn hoặc các lớp do người dùng định nghĩa mà không có không gian tên, bạn cần đặt dấu gạch chéo ngược trước tên của các lớp đó (

namespace Store\Model; class Customer { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } }

Code language: HTML, XML (xml)
41)

Không gian tên của một lớp là gì?

Không gian tên là một cách nhóm các số nhận dạng để chúng không xung đột . Sử dụng một lớp ngụ ý rằng bạn có thể tạo một thể hiện của lớp đó, không đúng với các không gian tên. 2. Bạn có thể sử dụng khai báo sử dụng với các không gian tên và điều đó là không thể với các lớp trừ khi bạn xuất phát từ chúng.

Làm cách nào để sử dụng lớp không gian tên trong PHP?

Khai báo vùng tên .
cú pháp. Khai báo một không gian tên gọi là Html. .
cú pháp. Khai báo một không gian tên có tên là Html bên trong một không gian tên có tên là Code. .
Ví dụ. Sử dụng các lớp từ không gian tên Html. .
Ví dụ. Sử dụng các lớp từ không gian tên Html mà không cần Html\qualifier. .
Ví dụ. Đặt cho một không gian tên một bí danh. .
Ví dụ

Từ khóa không gian tên PHP là gì?

Từ khóa không gian tên là được sử dụng để khai báo không gian tên mà tệp PHP đang hoạt động . Không gian tên ngăn xung đột giữa các lớp có cùng tên và có thể được sử dụng để tổ chức mã bằng cách nhóm các lớp liên quan lại với nhau.

Mục đích của không gian tên là gì?

Không gian tên được sử dụng để sắp xếp mã thành các nhóm hợp lý và để ngăn xung đột tên có thể xảy ra, đặc biệt khi cơ sở mã của bạn bao gồm nhiều thư viện . Tất cả các mã định danh ở phạm vi không gian tên đều hiển thị với nhau mà không cần đủ điều kiện.