Menu
Coddy logo textTech

use 키워드

Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 91개 중 11번째.

클래스를 사용할 때마다 전체 네임스페이스 경로를 작성하는 것은 번거로울 수 있습니다. 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

그룹화된 임포트(grouped imports)를 사용하여 동일한 네임스페이스에서 여러 클래스를 가져올 수도 있습니다:

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

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

핵심 포인트: use 문은 (있는 경우) namespace 선언 뒤에, 그리고 다른 어떤 코드보다 앞에 위치해야 합니다. 반복적인 네임스페이스 경로를 제거하여 코드를 더 깔끔하고 읽기 쉽게 만들어 줍니다.

challenge icon

챌린지

쉬움

클래스를 깔끔하게 가져오고 모든 곳에 전체 네임스페이스 경로를 작성하는 것을 피하기 위해 use 키워드를 사용하여 메시징 애플리케이션을 구성해 봅시다.

함께 작동하는 세 개의 파일을 생성합니다:

  • Messaging/Email.phpMessaging 네임스페이스에 Email 클래스를 정의합니다. public $address 속성, 주소를 받아 설정하는 생성자, 그리고 "Sending email to [address]"를 반환하는 send() 메서드를 가져야 합니다.
  • Messaging/SMS.phpMessaging 네임스페이스에 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(...)를 작성할 수 있도록 합니다.

치트 시트

use 키워드는 파일 상단에서 클래스를 가져와서, 전체 네임스페이스 경로 대신 짧은 이름으로 참조할 수 있게 해줍니다:

<?php
use Blog\User;

$user = new User("Alice");

서로 다른 네임스페이스의 클래스들이 동일한 이름을 공유할 때, as 키워드를 사용하여 별칭을 만듭니다:

<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;

$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");

그룹화된 임포트를 사용하여 동일한 네임스페이스에서 여러 클래스를 가져옵니다:

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

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

use 문은 (있는 경우) namespace 선언 뒤에, 그리고 다른 어떤 코드보다 먼저 나타나야 합니다.

직접 해보기

<?php
// 클래스 파일 포함
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: 'use' 키워드를 사용하여 Messaging 네임스페이스에서 두 클래스를 모두 가져오기
// 이렇게 하면 'new \Messaging\Email(...)' 대신 'new Email(...)'을 작성할 수 있습니다.


// TODO: 주소가 "alice@example.com"인 Email 객체 생성


// TODO: 전화번호가 "555-1234"인 SMS 객체 생성


// TODO: 각 객체에서 send()를 호출한 결과를 출력 (각각 별도의 줄에 출력)

?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨