Không gian tên

Một phần của tài liệu Giáo trình Phát triển ứng dụng web: Phần 2 - Lê Đình Thanh, Nguyễn Việt Anh (Trang 49 - 51)

9. foreach ($poems as $p ){

6.2.9. Không gian tên

Trong qu{ trình ph{t triển phần mềm, đôi khi việc đặt tên những lớp đối tƣợng, giao diện, h|m, hằng số do ngƣời lập trình định nghĩa bị trùng lặp. Để khắc phục vấn đề n|y, không gian tên (namespaces) đƣợc sử dụng. Không gian

tên trong PHP tƣơng đƣơng gói (package) trong Java và giống không gian tên

trong C. Khai báo không gian tên trong PHP theo cú pháp:

namespace NsName;

// Lớp, giao diện, hàm, hằng số thuộc Khơng_gian_tên

trong đó NsName l| tên của không gian tên. Khai b{o không gian tên phải đƣợc

đặt ở đầu tệp, ngay sau thẻ <?php. Không gian tên đƣợc khai báo theo cú pháp

WebAppDevLê Đình Thanh, Nguyễn Việt Anh

134 một tệp, cú pháp thứ hai sau đ}y đƣợc sử dụng:

namespace NsName1 {

// Lớp, giao diện, hàm, hằng số thuộc NsName1

}

namespace NsName2 {

// Lớp, giao diện, hàm, hằng số thuộc NsName2

}

Một khơng gian tên có thể chứa khơng gian tên con (subnamespaces). PHP sử dụng cú pháp tƣơng tự đƣờng dẫn thƣ mục để biểu diễn không gian tên con:

namespace NsName\SubNsName;

C{c lớp, giao diện, h|m, hằng số không đƣợc định nghĩa trong một không gian tên n|o đƣợc coi là nằm trong không gian tên to|n cục (\). Cũng có thể sử dụng khơng gian tên vơ danh để biểu thị không gian tên to|n cục nhƣ sau:

namespace , /*Khơng gian tên tồn cục*/ }

C{c không gian tên kh{c đƣợc xem nhƣ nằm trong không gian tên to|n cục. Có

thể hình dung, tồn bộ khơng gian tên của một ứng dụng có dạng nhƣ sau:

\ \namespace1 \namespace1\subnamespace11 \namespace1\subnamespace12 \namespace2 \namespace2\subnamespace21 \namespace2\subnamespace21\subsubnamespace211 ...

Tên đầy đủ của lớp, giao diện, h|m, hằng số bao gồm không gian tên ở trƣớc,

bắt đầu từ khơng gian tên tồn cục, theo sau là tên của lớp, giao diện, hàm, hằng số, theo mẫu:

\namespace\subnamespace\subsubnamespace\...\ClassName

Tên đầy đủ đƣợc sử dụng để tham chiếu đến lớp, giao diện, hàm, hằng số

thuộc không gian tên bất kỳ. Nếu lớp, giao diện không đƣợc viết với tên đầy đủ, chúng đƣợc hiểu l| thuộc không gian tên hiện tại (không gian tên chứa mã lệnh tham chiếu). Nếu h|m, hằng số không đƣợc viết với tên đầy đủ, chúng đƣợc hiểu

l| thuộc không gian tên hiện tại hoặc thuộc không gian tên to|n cục nếu khơng tìm thấy trong khơng gian tên hiện tại. Ví dụ, trong các mã lệnh sau đ}y, các lớp

WebAppDevLê Đình Thanh, Nguyễn Việt Anh

135

ClassA, ClassB, ClassC đƣợc hiểu là lần lƣợt thuộc không gian tên \abc\def,

\abc\def\ghi, \jkl; hàm dosomething() có thể nằm trong không gian tên \abc\def

hoặc không gian tên toàn cục (\); trƣờng hợp không không gian tên \abc\def

không chứa hàm dosomething(), hệ thống mới sử dụng hàm dosomething() ở khơng

gian tên tồn cục. namespace \abc\def { $a = new ClassA(); $b = new ghi\ClassB(); $c = new \jkl\ClassC(); dosomething(); }

Để không phải viết tên đầy đủ, PHP cho phép nhập v| đặt bí danh cho khơng gian tên, lớp, v| giao diện. Nhập không gian tên, lớp, giao diện theo mẫu:

use ns\subns\Classname;

sau đó chỉ cần sử dụng Classname thay cho tên đầy đủ ns\subns\Classname. Nhập

và đặt bí danh cho khơng gian tên, lớp, giao diện theo mẫu:

use ns\subns\Classname as Another;

sau đó sử dụng Another thay cho tên đầy đủ ns\subns\Classname. Ví dụ, giả sử lớp

Dog đã đƣợc định nghĩa trong không gian tên \animal, việc nhập và sử dụng bí

danh cho lớp Dog có thể đƣợc thực hiện nhƣ sau:

use animal\Dog as D; $d = new D();

Một phần của tài liệu Giáo trình Phát triển ứng dụng web: Phần 2 - Lê Đình Thanh, Nguyễn Việt Anh (Trang 49 - 51)

Tải bản đầy đủ (PDF)

(126 trang)