Bài 08: PHP Namespaces – vi-magento.com

PHP Namespaces giải quyết hai vấn đề:
1. Chúng cho phép tổ chức tốt hơn bằng cách nhóm các class làm việc cùng nhau để thực hiện một nhiệm vụ.
2. Chúng cho phép sử dụng cùng một tên cho nhiều class.

Ví dụ, bạn có một tập hợp các class dùng để xử lý dữ liệu như Save, Delete, Edit. Ở table NhanVien và SanPham, bạn đều tạo các class là Save, Delete, Edit tương tự nhau. Namespace giúp nhóm các class lại với nhau để class không bị nhầm lẫn.

Khai báo namespace

Namespace được khai báo ở đầu tập lệnh, với từ khóa namespace:

1

namespace

Html

;

Như mình đã nói ở trên, namespace phải được khai báo đầu tiên trong tập lệnh PHP. Khai báo sau đây là sai:

1

2

3

4

5

<?php

echo

“Hello World!”

;

namespace

Html

;

.

.

.

?>

Tất cả các hằng số, class, function được khai báo trong file này sẽ thuộc Html namespace.

Ví dụ

Tạo một class Table trong namespace Html:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?php

namespace

Html

;

class

Table

{

  

public

$title

=

“”

;

  

public

$numRows

=

0

;

  

public

function

message

(

)

{

    

echo

“<p>Table ‘{$this->title}’ has {$this->numRows} rows.</p>”

;

  

}

}

$table

=

new

Table

(

)

;

$table

->

title

=

“My table”

;

$table

->

numRows

=

5

;

?>

 

<

!

DOCTYPE

html

>

<

html

>

<

body

>

 

<?php

$table

->

message

(

)

;

?>

 

<

/

body

>

<

/

html

>

Có thể có các không gian tên lồng nhau.
Khai báo một namespace được gọi là Html bên trong một namespace được gọi là Code:

1

namespace

Code

\

Html

;

Sử dụng namespace

Để khởi tạo các class có khai báo namespace, ta cần có namespace gắn liền với nó:

1

2

$

table

=

new

Html

\

Table

(

)

$

row

=

new

Html

\

Row

(

)

;

Trường hợp nhiều class có cùng namespace, ta có thể sử dụng:

1

2

3

namespace

Html

;

$

table

=

new

Table

(

)

;

$

row

=

new

Row

(

)

;

Định danh cho một namespace

Trường hợp có nhiều class trùng tên với nhau, ta có thể khai báo như sau để tạo một định danh mới cho namespace:

1

2

use

Html

as

H

;

$

table

=

new

H

\

Table

(

)

;

Rate this post

Viết một bình luận