PHP | 네임스페이스란?

|

요약

네임스페이스(Namespace, 이름공간)은 개체를 구분할 수 있도록 범위를 지정합니다.

이는 스코프 영역을 분리하는 방법으로 쓰일 수 있는데요,
내부 식별자가 충돌하지 않도록 유효범위를 제공하는 선언으로 생각하시면 됩니다.

선언

namespace rad;

먼저 네임스페이스를 선언합니다.

namespace rad;

class Sample
{
    private $name;

    public function __construct()
    {
        $this->name = "rad";
    }
    
    // 메소드
    public function talk()
    {
        echo "안녕";
    }
    // 메소드 return 값 존재
    public function add_age($age)
    {
        this->age += $age;
        return $this;
    }
    // 정적 메소드
    public static function factory()
    {
        return new Sample();
    }
}

Sample 이라는 클래스명을 생성합니다. 그리고 rad/Sample.php 의 위치에 저장합니다.

정적 메소드

정적 메소드(Static Method, 스태틱) 를 할당하면 클래스를 만든 다음 바로 변수나 함수를 호출할 수 있게 됩니다. 인스턴스 없이 사용할 수 있습니다.

public static function 정적메소드명()
{
    echo "출력";
}

인스턴스

클래스(class) 를 가져다 사용하는 것을 인스턴스(instance) 라고 합니다.

// 클래스 생성
class 음식점
{
    public $food;

    public function talk()
    {
        print_r("어서오세요");
    }
}

// 인스턴스 생성
$변수 = new 음식점();
$변수 -> food = "라면";


// 출력
print_r($변수);
echo "<br>";
$변수->talk();

사용

use rad\Sample;

use 네임스페이스명\클래스명; 을 통해 선언한 다음 사용하면 됩니다.

$sample = new rad\Sample();

use를 사용하지 않고 사용할 수도 있는데요,
이 때는 new 네임스페이스명\클래스명(); 형식으로 사용할 수 있습니다.

C++

namespace a
{
    void Display(); // 함수의 원형
    int count;      // 변수의 선언
}

namespace b
{
    double display; // 변수의 선언
    int count;      // 변수의 선언
}

C++ 에서는 이렇게 사용할 수 있습니다.

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

클릭하여 복사