Từ khóa use
Thuộc phần Lập trình hướng đối tượng trong hành trình PHP của Coddy. Bài học 11 trên 91.
Việc viết đầy đủ đường dẫn namespace mỗi khi dùng một lớp có thể trở nên phiền phức. Từ khóa use cho phép bạn nhập một lớp ở đầu tệp, để bạn có thể tham chiếu lớp đó bằng tên ngắn.
Thay vì viết \Blog\User nhiều lần, bạn có thể import một lần:
<?php
use Blog\User;
$user = new User("Alice");
echo $user->name;
Khi cần dùng các lớp từ nhiều không gian tên khác nhau nhưng trùng tên, bạn có thể tạo bí danh bằng từ khóa as:
<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;
$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");
echo $blogger->name . "\n";
echo $customer->email . "\n";
Đầu ra:
Alice
alice@example.com
Bạn cũng có thể nhập nhiều lớp từ cùng một không gian tên bằng cách dùng cú pháp nhập nhóm:
<?php
use Blog\{User, Post, Comment};
$user = new User("Alice");
$post = new Post("Hello World");
Điểm chính: Câu lệnh use phải xuất hiện sau khai báo namespace (nếu có) và trước mọi đoạn code khác. Câu lệnh này giúp code gọn gàng, dễ đọc hơn bằng cách loại bỏ các đường dẫn namespace lặp lại.
Thử thách
DễHãy tổ chức ứng dụng nhắn tin bằng từ khóa use để nhập các lớp gọn gàng và tránh phải viết đầy đủ đường dẫn không gian tên ở mọi nơi.
Bạn sẽ tạo ba tệp phối hợp với nhau:
Messaging/Email.php: Định nghĩa lớpEmailtrong không gian tênMessaging. Lớp này cần có thuộc tínhpublic $address, một hàm khởi tạo nhận và gán địa chỉ, cùng phương thứcsend()trả về"Sending email to [address]".Messaging/SMS.php: Định nghĩa lớpSMStrong không gian tênMessaging. Lớp này cần có thuộc tínhpublic $phone, một hàm khởi tạo nhận và gán số điện thoại, cùng phương thứcsend()trả về"Sending SMS to [phone]".main.php: Nạp cả hai tệp lớp, sau đó dùng từ khóauseđể nhập cả hai lớp. Tạo một đối tượngEmailvới địa chỉ"alice@example.com"và một đối tượngSMSvới số điện thoại"555-1234". In ra kết quả gọisend()trên mỗi đối tượng, mỗi kết quả trên một dòng riêng.
Trong main.php, thay vì viết new \Messaging\Email(...), bạn sẽ nhập các lớp ở đầu tệp bằng các câu lệnh use để có thể viết đơn giản new Email(...) và new SMS(...).
Tự làm thử
<?php
// Nạp các tệp chứa lớp (class)
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';
// TODO: Dùng từ khóa (keyword) 'use' để nhập cả hai lớp từ namespace Messaging
// Nhờ đó, bạn có thể viết 'new Email(...)' thay vì 'new \Messaging\Email(...)'
// TODO: Tạo đối tượng (object) Email với địa chỉ "alice@example.com"
// TODO: Tạo đối tượng SMS với số điện thoại "555-1234"
// TODO: In ra kết quả khi gọi send() trên từng đối tượng, mỗi kết quả trên một dòng riêng
?>Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về OOP
Tệp bên ngoàiGiới thiệu về OOPLớp và đối tượngTừ khóa $thisPhương thứcThuộc tínhHàm khởi tạo (__construct)Hàm hủy (__destruct)Ôn tập: máy tính đơn giản4Kế thừa
Kế thừa cơ bảnTừ khóa parent::Ghi đè phương thứcTừ khóa finalLớp trừu tượngÔn tập: hệ thống phân cấp nhân viên7Đóng gói
Công khai, được bảo vệ, riêng tưTìm hiểu sâu về bộ điều chỉnh quyền truy cậpGetter và setterẨn thông tinRút gọn hàm khởi tạo (8.0)Ôn tập: hệ thống hồ sơ học sinh2Không gian tên và tự động nạp
Giới thiệu về không gian tênTừ khóa useChuẩn tự động nạp PSR-4Trình tự động nạp của ComposerÔn tập: dự án có tổ chức5Giao diện và hợp đồng
Giới thiệu về giao diệnTriển khai giao diệnTriển khai nhiều giao diệnGiao diện và lớp trừu tượngGợi ý kiểu với giao diệnÔn tập: Máy tính hình học8Phương thức ma thuật
Giới thiệu về phương thức ma thuật__toString và __debugInfo__get, __set, __isset, __unset__call và __callStatic__clone và sao chép đối tượng__serialize và __unserializeÔn tập: Bộ sưu tập tùy chỉnh3Thuộc tính của lớp
Thuộc tính instance và staticHằng số trong lớpPhương thức và thuộc tính staticThuộc tính private và protectedThuộc tính chỉ đọc (PHP 8.1)Ôn tập: Trình quản lý tài khoản ngân hàng6Đa hình
Xem lại việc ghi đè phương thứcĐa hình qua giao diệnGợi ý kiểu và kiểu hợpLiên kết tĩnh muộnÔn tập: bộ xử lý thanh toánTự luyện tập: Trình biên dịch PHP online