PHP의 네임스페이스는 이름 충돌을 피하기 위해 이름을 재사용하여 항목을 캡슐화하는 C++의 네임스페이스와 유사합니다. 많은 상황에서 추상적인 개념으로 간주되기도 합니다. 치명적인 오류를 수신하지 않고 고유한 네임스페이스에서 동일한 클래스나 인터페이스, 함수 또는 상수 함수를 다시 선언할 수 있습니다. 이 네임스페이스는 일반 PHP 코드를 보유하고 계층적으로 레이블이 지정된 코드 블록입니다. 유효한 PHP 코드로 구성됩니다. 또한 클래스, 함수, 상수, 인터페이스와 같은 코드 유형에도 영향을 미칩니다. 네임스페이스는 키워드 네임스페이스를 사용하여 선언됩니다.
광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
구문:
namespace sample;
여기서 네임스페이스 샘플이 선언됩니다.
다른 PHP 식별자와 마찬가지로 네임스페이스도 몇 가지 규칙을 따라야 합니다. 즉, 네임스페이스는 밑줄이나 문자로 시작하고 그 뒤에 문자, 밑줄 또는 숫자가 와야 합니다.
드레스, 액세서리 등 모든 물건을 보관할 수 있는 찬장으로 네임스페이스를 상상해 보겠습니다. 각 사람마다 자신의 물건을 보관할 수 있는 별도의 찬장이 있습니다. 각 사람의 찬장을 식별하기 위해 각 사람에게 라벨을 부여하여 혼동이 발생하지 않도록 할 수 있습니다. 과거에는 프로그래머가 상수, 클래스 및 함수에서 밑줄을 사용하여 코드 베이스를 분리했습니다. 이는 모든 사람의 물건에 라벨을 붙이고 큰 찬장에 보관하는 것과 비슷합니다. 정리가 되어있어도 효율성은 높아지지 않습니다.
이런 상황에서 네임스페이스 개념이 등장합니다. 동일한 클래스, 인터페이스, 함수 및 상수를 다른 네임스페이스에서 치명적인 오류 없이 선언할 수 있습니다. 기본적으로 네임스페이스는 일반 PHP 코드를 포함하는 계층적으로 레이블이 지정된 코드 블록입니다.
이미 언급했듯이 PHP의 네임스페이스는 이름 충돌을 피하기 위해 이름을 재사용하여 항목을 캡슐화합니다.
예를 들어 아래와 같은 PHP 프로그램을 생각해 보세요.
코드:
<?php namespace sample ; function func() { echo ' Never give up! Keep trying . . . ' ; } // Resolves to the function func() ; ?>
펑션 func가 존재하는 것을 볼 수 있으며, 코드 실행 시 텍스트를 출력합니다.
PHP 코드 라이브러리 크기가 증가함에 따라 이미 선언된 클래스 이름이나 함수를 의도치 않게 재사용할 가능성이 있습니다. 타사 구성 요소와 플러그인이 추가되면 문제가 더욱 악화됩니다. 또한 이름 충돌 문제는 네임스페이스를 사용하여 해결할 수 있습니다. PHP 상수, 함수 및 클래스를 네임스페이스 라이브러리에 함께 모을 수 있습니다. 이러한 네임스페이스는 컴퓨터의 파일 시스템에서 사용 가능한 폴더와 유사한 특정 계층 구조를 따를 수 있습니다. 하위 네임스페이스라는 개념은 프로젝트 구조를 정리하는 데 매우 유용합니다. 프로젝트에 데이터베이스 액세스가 필요한 경우 데이터베이스 예외, 연결 핸들러 등 데이터베이스와 관련된 모든 코드를 DB라는 하위 네임스페이스에 보관할 수 있습니다.
유연성을 유지하려면 하위 디렉토리에 하위 네임스페이스를 저장하는 것이 좋습니다. 이를 통해 프로젝트 구조화에 영감을 줄 뿐만 아니라 표준 PSR-0을 따르는 자동 로더를 쉽게 사용할 수 있습니다.
일반적으로 백슬래시는 PHP에서 네임스페이스 구분 기호로 사용됩니다.
SampleSub 샘플
SampleSubSampleSamp
CollegeProjCommonWidget
네임스페이스 선언이 전역적으로 이루어지는 경우 아래와 같이 이름을 사용하지 않고 선언할 수 있습니다.
코드:
<?php namespace { // Global . . . ! } ?>
어떤 경우에는 아래와 같이 하나의 PHP 코드 내에서 여러 네임스페이스를 사용할 수 있습니다.
코드:
<?php namespace sam { } namespace samp { } namespace { } ?>
코드:
<?php echo "Never Give up ! " ; namespace Html ; . . . ?>
다음은 PHP 네임스페이스의 예입니다.
네임스페이스를 사용하고 암시적 및 명시적으로 함수를 호출하는 PHP 프로그램
코드:
<?php namespace sample; function func() { echo 'Never give up! Keep trying. . .'; } // Resolves to the function func(); // Explicitly resolves to the function namespace\func(); ?>
출력:
프로그램에서는 네임스페이스 샘플이 먼저 생성됩니다. 그 후 func 함수가 정의되어 있고, 코드 실행 시 텍스트를 출력하는 것을 볼 수 있습니다. 함수가 암시적 및 명시적으로 호출되므로 텍스트가 두 번 인쇄됩니다.
아래와 같이 함수를 정의한 후 네임스페이스를 선언한다고 가정해 보겠습니다. 그러면 어떻게 될까요?
코드:
<?php function func() { echo 'Never give up! Keep trying. . .'; } // Resolves to the function func(); namespace sample; // Explicitly resolves to the function namespace\func(); ?>
Yes…. An error will be displayed, as shown below. That is, namespace should be defined at the beginning of the program.
Output:
PHP program that uses a namespace and calls a function for printing table details.
Code:
<?php namespace Html; class sampletable { public $heading= ""; public $cntrows= 0; public function fnc() { echo "<p> The Table used is '{$this->heading}' that has {$this->cntrows} different rows. . . .</p>"; } } $tb= new sampletable (); $tb->heading= " Students "; $tb->cntrows= 8 ; ?> <!DOCTYPE html> <html> <body> <?php $tb->fnc(); ?> </body> </html>
Output:
In the program, a namespace Html is created first. After that, a class sampletable is created with variables heading, cnt rows. A function func is also present, which contains a text. Heading students and 8 as count of rows were given after that. On executing the code, the line gets printed with the table name and number of rows.
Namespaces in PHP is similar to namespaces in C++ that encapsulates items by reusing names in order to avoid name conflicts. In this article, different aspects such as syntax, working, and examples of size() functions are explained in detail.
위 내용은 PHP 네임스페이스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!