>  기사  >  백엔드 개발  >  PHP 네임스페이스 개요 및 정의

PHP 네임스페이스 개요 및 정의

伊谢尔伦
伊谢尔伦원래의
2016-11-23 11:05:421043검색

네임스페이스 개요

네임스페이스란 무엇입니까? 광범위하게 말하면 네임스페이스는 사물을 캡슐화하는 방법입니다. 이 추상적인 개념은 여러 곳에서 찾아볼 수 있습니다. 예를 들어 디렉터리는 운영 체제에서 관련 파일을 그룹화하는 데 사용되며 디렉터리에 있는 파일의 네임스페이스 역할을 합니다. 예를 들어, foo.txt 파일은 /home/greg 및 /home/other 디렉토리에 동시에 존재할 수 있지만 두 개의 foo.txt 파일이 동일한 디렉토리에 존재할 수는 없습니다. 또한 /home/greg 디렉터리 외부에서 foo.txt 파일에 액세스할 때 /home/greg/foo.txt를 가져오려면 파일 이름 앞에 디렉터리 이름과 디렉터리 구분 기호를 넣어야 합니다. 이 원칙을 프로그래밍 분야에 적용한 것이 네임스페이스의 개념입니다.

PHP에서 네임스페이스는 클래스 라이브러리나 애플리케이션을 작성할 때 클래스나 함수와 같은 재사용 가능한 코드를 만들 때 발생하는 두 가지 유형의 문제를 해결하는 데 사용됩니다.

사용자가 작성한 코드 이름이 PHP 내부와 충돌합니다. 클래스/함수/상수 또는 타사 클래스/함수/상수.

매우 긴 식별자 이름(일반적으로 첫 번째 유형의 문제를 완화하기 위해 정의됨)에 대한 별칭(또는 짧은) 이름을 만들어 소스 코드의 가독성을 높입니다.

PHP 네임스페이스는 관련 클래스, 함수 및 상수를 그룹화하는 방법을 제공합니다. 다음은 PHP 네임스페이스 구문을 보여주는 예입니다.

예제 #1 네임스페이스 구문 예

<?php
    namespace my\name; 
    class MyClass {}
    function myfunction() {}
    const MYCONST = 1;
    $a = new MyClass;
    $c = new \my\name\MyClass; 
    $a = strlen(&#39;hi&#39;); 
    $d = namespace\MYCONST; 
    $d = __NAMESPACE__ . &#39;\MYCONST&#39;;
    echo constant($d); 
?>

PHP는 5.3.0 이후 버전부터 네임스페이스를 지원하기 시작합니다.

네임스페이스 정의

모든 합법적인 PHP 코드가 네임스페이스에 포함될 수 있지만 네임스페이스의 영향을 받는 코드 유형은 클래스, 함수, 상수 세 가지뿐입니다.

네임스페이스는 키워드 네임스페이스를 사용하여 선언됩니다. 파일에 네임스페이스가 포함되어 있으면 다른 모든 코드보다 먼저 네임스페이스를 선언해야 합니다.

예제 #1 단일 네임스페이스 선언

<?php
    namespace MyProject;
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */ }
?>

네임스페이스를 선언하기 전에 유효한 유일한 코드는 소스 파일 인코딩을 정의하는 데 사용되는 선언문입니다. 또한, 공백을 포함한 모든 비PHP 코드는 네임스페이스 선언 앞에 나타날 수 없습니다:

예제 #2 단일 네임스페이스 선언

<html>
<?php
    namespace MyProject; // 致命错误 - 命名空间必须是程序脚本的第一条语句
?>

또한 PHP의 다른 언어 기능과 다릅니다. PHP에서는 동일한 네임스페이스를 여러 파일에 정의할 수 있으므로 동일한 네임스페이스의 내용을 나누어 다른 파일에 저장할 수 있습니다.

하위 네임스페이스 정의

디렉터리와 파일 간의 관계와 마찬가지로 PHP 네임스페이스를 사용하면 계층적 네임스페이스 이름을 지정할 수도 있습니다. 따라서 네임스페이스 이름은 계층적 방식으로 정의될 수 있습니다.

예 #1 계층적 단일 네임스페이스 선언

<?php
    namespace MyProject\Sub\Level;
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */ }
?>

위의 예에서는 상수 MyProjectSubLevelCONNECT_OK, 클래스 MyProjectSubLevelConnection 및 함수 MyProjectSubLevelConnection을 만듭니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.