PHP 네임스페이스
PHP 네임스페이스
네임스페이스는 두 가지 다른 문제를 해결하는 한정자입니다.
- 작업을 수행하기 위해 함께 작동하는 클래스를 그룹화하여 더 나은 조직을 허용합니다.
- 둘 이상의 클래스에 동일한 이름을 사용할 수 있습니다.
예를 들어 Table, Row 및 Cell과 같은 HTML 테이블을 설명하는 클래스 집합이 있을 수 있으며 Table, Chair 및 Bed와 같은 가구를 설명하는 또 다른 클래스 집합이 있을 수 있습니다. 네임스페이스를 사용하여 클래스를 두 개의 다른 그룹으로 구성하는 동시에 두 개의 클래스 Table과 Table이 섞이는 것을 방지할 수 있습니다.
네임스페이스 선언
namespace
네임스페이스는 다음 키워드 를 사용하여 파일 시작 부분에 선언됩니다 .
통사론
Html이라는 네임스페이스를 선언합니다.
namespace Html;
참고: 선언 namespace
은 PHP 파일의 첫 번째 항목이어야 합니다. 다음 코드는 유효하지 않습니다.
<?php
echo "Hello World!";
namespace Html;
...
?>
이 파일에 선언된 상수, 클래스 및 함수는 Html 네임스페이스 에 속합니다 .
예시
Html 네임스페이스에 Table 클래스를 만듭니다.
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
추가 구성을 위해 중첩된 네임스페이스를 가질 수 있습니다.
통사론
Code라는 네임스페이스 안에 Html이라는 네임스페이스를 선언합니다.
namespace Code\Html;
네임스페이스 사용
선언 뒤에 오는 모든 코드 namespace
는 네임스페이스 내에서 작동하므로 네임스페이스에 속하는 클래스는 한정자 없이 인스턴스화할 수 있습니다. 네임스페이스 외부에서 클래스에 액세스하려면 클래스에 네임스페이스가 연결되어 있어야 합니다.
예시
Html 네임스페이스의 클래스 사용:
$table = new Html\Table()
$row = new Html\Row();
동일한 네임스페이스의 많은 클래스가 동시에 사용되는 경우 namespace
키워드를 사용하는 것이 더 쉽습니다.
예시
Html\qualifier 없이 Html 네임스페이스의 클래스를 사용합니다.
namespace Html;
$table = new Table();
$row = new Row();
네임스페이스 별칭
작성하기 쉽도록 네임스페이스나 클래스에 별칭을 제공하는 것이 유용할 수 있습니다. 이것은 use
키워드로 수행됩니다.
예시
네임스페이스에 별칭을 지정합니다.
use Html as H;
$table = new H\Table();
예시
클래스에 별칭을 지정합니다.
use Html\Table as
T;
$table = new T();