php 네임스페이스는 네임스페이스를 나타냅니다. 사용 방법: 먼저 PHP 샘플 파일을 만든 다음 "namespace MyProject;"를 통해 "MyProject" 네임스페이스에 코드를 정의합니다.
PHP 네임스페이스(namespace)
PHP 네임스페이스(namespace)는 PHP 5.3에서 추가되었습니다. C#과 Java를 공부했다면 네임스페이스는 새로운 것이 아닙니다. 그러나 이는 PHP에서 여전히 매우 중요한 의미를 갖습니다.
PHP 네임스페이스는 다음 두 가지 유형의 문제를 해결할 수 있습니다.
사용자가 작성한 코드와 PHP 내부 클래스/함수/상수 또는 타사 클래스/함수/상수 간의 이름 충돌.
매우 긴 식별자 이름(일반적으로 첫 번째 유형의 문제를 완화하기 위해 정의됨)에 대한 별칭(또는 짧은) 이름을 만들어 소스 코드의 가독성을 높입니다.
네임스페이스 정의
기본적으로 모든 상수, 클래스 및 함수 이름은 PHP가 네임스페이스를 지원하기 전과 마찬가지로 전역 공간에 배치됩니다.
네임스페이스는 키워드 네임스페이스로 선언됩니다. 파일에 네임스페이스가 포함되어 있으면 다른 모든 코드보다 먼저 네임스페이스를 선언해야 합니다. 구문 형식은 다음과 같습니다.
<?php // 定义代码在 'MyProject' 命名空间中 namespace MyProject; // ... 代码 ...
다음과 같이 동일한 파일에 서로 다른 네임스페이스 코드를 정의할 수도 있습니다.
<?php namespace MyProject; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } namespace AnotherProject; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } ?>
단일 파일에 여러 네임스페이스를 정의하는 데 이 구문을 사용하지 않는 것이 좋습니다. 다음 중괄호 형식의 구문을 사용하는 것이 좋습니다.
<?php namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace AnotherProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } ?>
네임스페이스가 아닌 전역 코드를 네임스페이스 코드와 결합하려면 중괄호 구문만 사용할 수 있습니다. 전역 코드는 명명되지 않은 네임스페이스 문과 함께 중괄호로 묶어야 합니다. 예:
<?php namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace { // 全局代码 session_start(); $a = MyProject\connect(); echo MyProject\Connection::start(); } ?>
네임스페이스를 선언하기 전에 유효한 유일한 코드는 소스 파일이 인코딩되는 방법을 정의하는 선언 문입니다. 공백을 포함하여 PHP가 아닌 코드는 네임스페이스 선언 앞에 나타날 수 없습니다.
<?php declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码 namespace MyProject { const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } } namespace { // 全局代码 session_start(); $a = MyProject\connect(); echo MyProject\Connection::start(); } ?>
다음 코드는 구문 오류를 발생시킵니다.
<html> <?php namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句 ?>
Subnamespace
디렉토리와 파일 간의 관계와 마찬가지로 PHP 네임스페이스를 사용하면 계층적 네임스페이스의 이름을 지정할 수도 있습니다. 따라서 네임스페이스 이름은 계층적 방식으로 정의될 수 있습니다.
<?php namespace MyProject\Sub\Level; //声明分层次的单个命名空间 const CONNECT_OK = 1; class Connection { /* ... */ } function Connect() { /* ... */ } ?>
위의 예에서는 상수 MyProjectSubLevelCONNECT_OK, MyProjectSubLevelConnection 클래스 및 MyProjectSubLevelConnect 함수를 만듭니다.
네임스페이스 사용법
PHP 네임스페이스의 클래스 이름은 세 가지 방법으로 참조될 수 있습니다:
정규화되지 않은 이름 또는 접두사가 포함되지 않은 클래스 이름(예: $a=new foo() 또는 foo::staticmethod( ); ;. 현재 네임스페이스가 currentnamespace이면 foo는 currentnamespacefoo로 확인됩니다. foo를 사용하는 코드가 전역 코드이고 어떤 네임스페이스에도 코드를 포함하지 않는 경우 foo는 foo로 확인됩니다. 경고: 네임스페이스의 함수 또는 상수가 정의되지 않은 경우 정규화되지 않은 함수 또는 상수 이름은 전역 함수 또는 상수 이름으로 확인됩니다.
정식 이름 또는 접두사가 포함된 이름(예: $a = new subnamespacefoo(); 또는 subnamespacefoo::staticmethod();). 현재 네임스페이스가 currentnamespace이면 foo는 currentnamespacesubnamespacefoo로 확인됩니다. foo를 사용하는 코드가 전역 코드인 경우, 어떤 네임스페이스에도 포함되지 않은 코드인 foo는 subnamespacefoo로 확인됩니다.
정규화된 이름 또는 전역 접두사 연산자가 포함된 이름(예: $a = new currentnamespacefoo() 또는 currentnamespacefoo::staticmethod();). 이 경우 foo는 항상 코드에서 리터럴 이름 currentnamespacefoo로 확인됩니다.
위 내용은 PHP 네임스페이스 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!