Menu
Coddy logo textTech

useキーワード

CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 11/91。

class を使うたびに完全な namespace パスを書くのは、面倒になることがあります。use keyword を使うと、ファイルの先頭で class を import できるため、短い名前で参照できます。

\Blog\Userを繰り返し記述する代わりに、一度だけインポートできます:

<?php
use Blog\User;

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

同じ名前を持つ異なる namespace の classes が必要な場合は、as keyword を使用してエイリアスを作成できます。

<?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

同じ namespace から複数のクラスを grouped imports を使って import することもできます。

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

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

重要なポイント: use ステートメントは、(存在する場合)namespace 宣言の後、ほかのコードより前に記述する必要があります。これにより、繰り返し使用する namespace パスを省略でき、コードがより簡潔で読みやすくなります。

challenge icon

チャレンジ

簡単

use キーワードを使用してクラスをきれいにインポートし、あらゆる場所で完全な namespace パスを書くのを避けながら、Messaging アプリケーションを整理しましょう。

連携して動作する3つのファイルを作成します。

  • Messaging/Email.php: Messaging namespace に Email class を Define します。public $address property、address を受け取って設定する constructor、そして "Sending email to [address]" を returns する send() method を持つ必要があります。
  • Messaging/SMS.php: Messaging namespace に SMS class を Define します。public $phone property、phone number を受け取って設定する constructor、そして "Sending SMS to [phone]" を returns する send() method を持つ必要があります。
  • main.php: 両方の class files を Include し、その後 use キーワードを使用して両方の classes をインポートします。address が "alice@example.com"Email object と、phone が "555-1234"SMS object を Create します。それぞれの object で send() を calling した result を Print します(それぞれ別の line に出力します)。

main.php では、new \Messaging\Email(...) と書く instead に、ファイルの先頭で use statements を使用して classes をインポートするため、単純に new Email(...)new SMS(...) と書けます。

自分で試してみよう

<?php
// クラスファイルをインクルードする
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: 'use' キーワードを使って Messaging 名前空間から両方のクラスをインポートする
// これにより 'new Email(...)' と書けるようになり、'new \Messaging\Email(...)' の代わりになる


// TODO: Create an Email object with address "alice@example.com"


// TODO: 電話番号 "555-1234" で SMS オブジェクトを作成する


// TODO: 各オブジェクトで send() を呼び出した結果を出力する(それぞれを別の行に)

?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: PHPオンラインコンパイラ