>  기사  >  백엔드 개발  >  네임스페이스 - PHP 매뉴얼 노트

네임스페이스 - PHP 매뉴얼 노트

WBOY
WBOY원래의
2016-08-08 09:29:00826검색

개요

네임스페이스는 사물을 캡슐화하는 방법입니다. 이 추상적인 개념은 여러 곳에서 볼 수 있습니다. 예를 들어 운영 체제에서는 디렉터리가 관련 파일을 그룹화하는 데 사용됩니다. 디렉터리는 네임스페이스 역할을 합니다. 이 원칙을 프로그래밍 분야에 적용한 것이 네임스페이스의 개념입니다. PHP 5.3 이후 버전에서는 네임스페이스를 지원하기 시작합니다.

네임스페이스 정의

네임스페이스는 namespace 키워드로 선언됩니다. 모든 합법적인 PHP 코드는 네임스페이스에 포함될 수 있지만 클래스, 함수, 상수의 세 가지 유형만 네임스페이스의 영향을 받습니다.

네임스페이스를 선언하기 전에 유효한 유일한 코드는 소스 파일의 인코딩을 정의하는 declare 문입니다. 네임스페이스는 프로그램 스크립트의 첫 번째 문이어야 하며 공백을 포함하여 PHP가 아닌 모든 코드는 네임스페이스 선언 앞에 나타날 수 없습니다. 동일한 네임스페이스를 여러 파일에 정의할 수 있습니다.

하위 네임스페이스 정의

디렉터리와 파일의 관계와 마찬가지로 PHP에서는 계층적 네임스페이스를 지정할 수도 있습니다.

동일한 파일에 여러 네임스페이스 정의

PHP는 이 구문을 지원하지만 사용을 권장하지 않습니다. 동일한 파일에 여러 네임스페이스를 정의하는 구문 형식에는 두 가지가 있습니다. 하나는 간단한 상위 및 하위 목록이고 다른 하나는 중괄호를 사용하는 구문입니다. 두 번째 것을 사용하는 것이 좋습니다.

<code><?php 
declare(encoding = 'UTF-8');
namespace MyProject {
	/* MyProject */
}
namespace {
	/* global */
}</code>

네임스페이스가 아닌 전역 코드를 네임스페이스 코드와 결합하려면 중괄호 구문만 사용할 수 있습니다.

네임스페이스 사용: 기본

네임스페이스를 사용하려면 PHP가 네임스페이스에서 사용할 요소를 어떻게 아는지 이해해야 합니다.

파일 시스템에는 파일에 액세스하는 세 가지 방법이 있습니다.

  • 상대 파일 이름 형식
  • 상대 경로 이름 형식
  • 절대 경로명 형식

파일 시스템과 마찬가지로 PHP 네임스페이스에서도 클래스 이름을 세 가지 방법으로 참조할 수 있습니다. 네임스페이스 이름 정의를 이해해야 합니다.

  • 수식되지 않은 이름, 접두사가 없는 클래스 이름입니다. 이름에 네임스페이스 구분 기호가 포함되지 않은 식별자입니다. 예를 들어 Foo.
  • 정식 이름, 접두사가 포함된 이름, 이름에 네임스페이스 구분 기호가 포함된 식별자. 예를 들어 FooBar.
  • 전역 접두사 연산자의 이름을 포함한 정규화된 이름입니다. 이름에 네임스페이스 구분 기호가 포함되어 있고 네임스페이스 구분 기호로 시작하는 식별자입니다. 예를 들어 FooBar. namespaceFoo도 정규화된 이름입니다.

네임스페이스 및 동적 언어 기능

네임스페이스 구현은 언어 자체의 동적 특성에 영향을 받으며 때로는 정규화된 이름을 사용해야 합니다.

namespace키워드 및 __NAMESPACE__상수

상수 __NAMESPACE__의 값은 현재 네임스페이스의 이름을 포함하는 문자열입니다. 네임스페이스에 포함되지 않은 전역 코드에는 빈 문자열이 포함됩니다. 상수 __NAMESPACE__는 이름을 동적으로 생성할 때 유용합니다.

키워드 namespace는 현재 네임스페이스나 하위 네임스페이스의 요소에 명시적으로 액세스하는 데 사용할 수 있습니다. 클래스의 self 연산자와 동일합니다.

네임스페이스 사용: alias/import

Unix 계열 파일 시스템에서 다른 파일이나 디렉터리에 대한 심볼릭 링크를 만드는 방법과 유사하게 별칭을 통해 외부 정규화된 이름을 참조하거나 가져올 수 있습니다.

PHP 네임스페이스는 두 가지 별칭 또는 가져오기 방법을 지원합니다.

  • 클래스 이름에 별칭 사용
  • 네임스페이스 이름에 별칭 사용

별칭을 가져오거나 사용하려면 use 연산자를 사용하여 한 줄에 여러 use 문을 지원합니다. 네임스페이스에 있는 이름의 경우 선행 백슬래시는 불필요하며 허용되지 않습니다. 가져온 이름은 정규화되어야 하고 현재 네임스페이스를 기준으로 확인되지 않기 때문입니다.

글로벌 공간

네임스페이스가 정의되지 않으면 모든 클래스와 함수가 전역 공간에 정의됩니다. 이름 앞에 가 붙으면 해당 이름이 전역 공간의 이름임을 나타냅니다.

네임스페이스 사용: 대체 전역 함수/상수

네임스페이스에서 PHP는 정규화되지 않은 클래스, 함수 또는 상수 이름을 발견하면 다른 연결 전략을 사용하여 이름을 확인합니다.

클래스 이름은 항상 현재 네임스페이스의 이름으로 확인되므로 시스템 내부 또는 네임스페이스에 포함되지 않은 클래스 이름에 액세스할 때는 정규화된 이름을 사용해야 합니다.

함수와 상수의 경우, 함수나 상수가 현재 네임스페이스에 없으면 PHP는 전역 공간의 함수나 상수를 사용하게 됩니다.

이름 확인 규칙

이름 확인 규칙에는 많은 텍스트가 포함되어 있으며 특정 문제에 대한 자세한 분석이 필요합니다.

(전문 종료)

위 내용은 네임스페이스 - PHP 매뉴얼 노트와 관련 내용을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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