PHP 네임스페이스

王林
풀어 주다: 2024-08-29 13:00:16
원래의
773명이 탐색했습니다.

PHP의 네임스페이스는 이름 충돌을 피하기 위해 이름을 재사용하여 항목을 캡슐화하는 C++의 네임스페이스와 유사합니다. 많은 상황에서 추상적인 개념으로 간주되기도 합니다. 치명적인 오류를 수신하지 않고 고유한 네임스페이스에서 동일한 클래스나 인터페이스, 함수 또는 상수 함수를 다시 선언할 수 있습니다. 이 네임스페이스는 일반 PHP 코드를 보유하고 계층적으로 레이블이 지정된 코드 블록입니다. 유효한 PHP 코드로 구성됩니다. 또한 클래스, 함수, 상수, 인터페이스와 같은 코드 유형에도 영향을 미칩니다. 네임스페이스는 키워드 네임스페이스를 사용하여 선언됩니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

구문:

namespace sample;
로그인 후 복사

여기서 네임스페이스 샘플이 선언됩니다.

다른 PHP 식별자와 마찬가지로 네임스페이스도 몇 가지 규칙을 따라야 합니다. 즉, 네임스페이스는 밑줄이나 문자로 시작하고 그 뒤에 문자, 밑줄 또는 숫자가 와야 합니다.

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 프로그램에서는 네임스페이스를 먼저 선언해야 한다는 점에 유의해야 합니다. 아래에 코드가 제공되면 초기에 네임스페이스가 제공되지 않으므로 유효하지 않은 것으로 감지됩니다.

코드:

<?php
echo "Never Give up ! " ;
namespace Html ;
. . .
?>
로그인 후 복사

PHP 네임스페이스의 예

다음은 PHP 네임스페이스의 예입니다.

예시 #1

네임스페이스를 사용하고 암시적 및 명시적으로 함수를 호출하는 PHP 프로그램

코드:

<?php
namespace sample;
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
// Explicitly resolves to the function
namespace\func();
?>
로그인 후 복사

출력:

PHP 네임스페이스

프로그램에서는 네임스페이스 샘플이 먼저 생성됩니다. 그 후 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 네임스페이스

Example #2

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:

PHP 네임스페이스

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.

Conclusion

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!