Menu
CoddyTech

use 关键字

本课属于 Coddy PHP 学习旅程的“面向对象编程”单元。第 11 课,共 91 课。

每次使用类时都写出完整的命名空间路径,可能会很麻烦。use 关键字可以让你在文件顶部导入类,这样你就能用它的短名称来引用它。

你可以只导入一次,而不用反复编写 \Blog\User:

<?php
use Blog\User;

$user = new User("Alice");
echo $user->name;

当你需要使用来自不同命名空间且名称相同的类时,可以使用 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";

输出:

Alice
alice@example.com

你也可以使用分组导入,从同一个命名空间导入多个类:

<?php
use Blog\{User, Post, Comment};

$user = new User("Alice");
$post = new Post("Hello World");

要点:use 语句必须放在 namespace 声明(如果有)之后,并且放在其他任何代码之前。它可以省去重复的命名空间路径,让代码更简洁、更易读。

challenge icon

挑战

简单

我们将使用 use 关键字来导入类,以便整理消息应用,并避免到处编写完整的命名空间路径。

你将创建三个协同工作的文件:

  • Messaging/Email.php:在 Messaging 命名空间中定义一个 Email 类。它应包含一个 public $address 属性、一个接收并设置地址的构造函数,以及一个返回 "Sending email to [address]" 的 send() 方法。
  • Messaging/SMS.php:在 Messaging 命名空间中定义一个 SMS 类。它应包含一个 public $phone 属性、一个接收并设置电话号码的构造函数,以及一个返回 "Sending SMS to [phone]" 的 send() 方法。
  • main.php:引入这两个类文件,然后使用 use 关键字导入这两个类。创建一个地址为 "alice@example.com" 的 Email 对象,以及一个电话号码为 "555-1234" 的 SMS 对象。分别调用每个对象的 send() 方法并打印结果(每个结果单独占一行)。

在 main.php 中,你不必编写 new \Messaging\Email(...),而是在文件顶部使用 use 语句导入这些类,这样就可以直接写 new Email(...) 和 new SMS(...)。

亲手试试

<?php
// 引入类文件
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: 使用 'use' 关键字从 Messaging 命名空间导入这两个类
// 这样你就可以写 'new Email(...)',而不用写 'new \Messaging\Email(...)'


// TODO: 创建一个地址为 "alice@example.com" 的 Email 对象


// TODO: 创建一个电话号码为 "555-1234" 的 SMS 对象


// TODO: 分别打印每个对象调用 send() 的结果,每个结果占一行

?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: PHP 在线编译器