네임스페이스(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 네임스페이스명\클래스명(); 형식으로 사용할 수 있습니다.
namespace a
{
void Display(); // 함수의 원형
int count; // 변수의 선언
}
namespace b
{
double display; // 변수의 선언
int count; // 변수의 선언
}C++ 에서는 이렇게 사용할 수 있습니다.