Namespace trong PHP – Toidicode.com

Chào mừng bạn đến với pgdgiolinhqt.edu.vn trong bài viết về Namespace php là gì chúng tôi sẽ chia sẻ kinh nghiệm chuyên sâu của mình cung cấp kiến thức chuyên sâu dành cho bạn.

Trong một dự án lớn có bao giờ bạn nghĩ đến trường hợp là sẽ xảy ra các class có trùng tên nhau không? Chính vì điều đó mà kể tử phiên bản PHP 5.3 trở đi thì PHP có hỗ trợ cho chúng ta chức năng mới là namespace …

1, Namespace 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 file mỗi file đều chứa một class và 2 class này lại có một điểm chung là trùng tên. Giờ đây khi bạn nhúng cả 2 file này vào và gọi class thì ngay lập tức chương trình sẽ báo lỗi. Để khắc phục điều đó thì chúng ta cần khai báo namespace cho hai class đó (đọc tiếp để xem cách khai báo).

2, Khai báo namespace.

-Để khai báo namespace trong PHP chú ta sử dụng cú pháp sau:

namespace Name;

Trong đó: Name là tên của namespace.

Chú ý: khi khai báo namespace thì chúng ta phải đặt nó ở phía trên cùng của file. Hơn nữa nếu như bạn muốn đặt tên namespace đúng chuẩn thì hãy tham khảo series PHP standards.

Xem thêm:  Các Loại Bảo Hiểm Xe Ô Tô, Luật, Tư Vấn Mua Bảo Hiểm Xe 2022

VD:

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

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

VD: Tạo một class HomeController trong thư mục appcontrollers và đặt tên namespace như sau:

namespace AppControllers; class HomeController { //code }

3, Gọi namespace.

– Khi mà một class đã được một namespace định danh 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:

new tenNamespacetenClass();

VD:

-Tạo một file ConNguoi.php có nội dung như sau:

<?php namespace ConNguoi; class ConNguoi { private $name = ‘Con Người’; public function getName() { return $this->name; } }

-Tiếp đó tạo một file index.php cùng cấp với file ConNguoi.php và lúc này chúng ta sẽ phải gọi class ConNguoi như sau:

<?php include ‘ConNguoi.php’; $connguoi = new ConNguoiConNguoi(); echo $connguoi->getName(); //kết quả: Con Người

Nạp namespace bằng use

-Nếu như bạn không muốn gọi namespace theo cách trên thì bạn sử dụng từ khóa use để nạp theo cú pháp sau:

use tenNamespacetenClass;

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

VD: Mình sẽ sử dụng use để nạp namespace của class ConNguoi, khi đó file index.php sẽ được viết như sau:

<?php include ‘ConNguoi.php’; use ConNguoiConNguoi; $connguoi = new ConNguoi(); echo $connguoi->getName(); //kết quả: Con Người

VD: Một file mà có khai báo namespace và use thì sẽ viết như sau:

<?php namespace nguoilon; include ‘ConNguoi.php’; use ConNguoiConNguoi; class NguoiLon extends ConNguoi { //code }

Xem thêm:  Kế toán quản trị (managerial accounting) là gì? - Viện FMIT

4, Định danh cho namespace.

-Giả sử namespace 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 namespace 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 namespace.

-Để tạo định danh mới cho namespace trong PHP chúng ta sử dụng từ khóa as với cú pháp như sau:

use tenNamespace as tenMoi;

VD: Tạo định danh cho namespace ConNguoi ở trên.

<?php include ‘ConNguoi.php’; use ConNguoi as People; $connguoi = new PeopleConNguoi(); echo $connguoi->getName(); //kết quả: Con Người

5, Nhiều namespace trong một file.

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

namespace nameone; class ClassOne { // } namespace nametwo; class ClassTwo { // }

VD:

-Tạo một file Class.php có nội dung như sau:

<?php namespace ClassConNguoi; class ConNguoi { private $name = ‘Con Người’; public function getName() { return $this->name; } } namespace ClassNguoiLon; class NguoiLon { private $name = ‘Nguoi Lon’; public function getName() { return $this->name; } }

-Và chúng ta sẽ tạo một file index.php để gọi 2 class đó như sau:.

<?php include ‘Class.php’; $connguoi = new ClassConNguoiConNguoi(); echo $connguoi->getName(); //kết quả: Con Người $nguoilon = new ClassNguoiLonNguoiLon(); echo $nguoilon->getName(); //kết quả: Nguoi Lon

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ị bỡ ngỡ. Bài tiếp theo chúng ta sẽ tìm hiểu về Trait trong PHP.

Xem thêm:  Mơ chảy máu chân răng là điềm gì? Đánh con gì để trúng lớn?
Rate this post

KevinNguyen

Kevin Nguyễn - Người quản trị nội dung web là một chuyên gia sáng tạo và chuyên nghiệp trong việc quản lý, phát triển và duy trì nội dung website. Với khả năng phân tích và đánh giá thông tin chính xác, anh/chị đảm bảo cung cấp thông tin hữu ích và đáng tin cậy cho cộng đồng.