Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 전역(Global) 클래스에 접근하는 방법


소개

PHP 파서는 클래스나 함수 이름처럼 네임스페이스가 지정되지 않은 식별자(unqualified identifier)를 만나면 이를 현재 네임스페이스에 속한 것으로 해석합니다. 따라서 PHP가 기본으로 제공하는 내장 클래스(predefined class)에 접근하려면, 이름 앞에 역슬래시(\)를 붙인 완전 한정 이름(fully qualified name)으로 참조해야 합니다.

내장 클래스 사용하기

다음 예제에서는 새로운 클래스가 PHP의 내장 클래스인 stdClass를 부모 클래스로 상속받습니다. 이때 전역(global) 클래스임을 명확히 나타내기 위해 클래스 이름 앞에 \를 붙여 참조합니다.

예제

<?
namespace testspace;
class testclass extends \stdClass{
    //
}
$obj=new testclass();
$obj->name="Raju";
echo $obj->name;
?>

포함(include)된 파일과 전역 네임스페이스

includerequire로 포함된 파일은 기본적으로 전역 네임스페이스에 속합니다. 따라서 다른 네임스페이스 안에서 포함된 파일의 클래스를 사용하려면 반드시 이름 앞에 \를 붙여야 합니다.

예제

#test1.php
<?php
class myclass{
    function hello(){ echo "Hello World\n";}
}
?>

위 파일은 별도의 네임스페이스 선언이 없으므로 전역 네임스페이스에 속합니다. 이제 이 파일을 다른 네임스페이스를 사용하는 스크립트에서 포함하여, \ 접두사로 클래스를 참조해 보겠습니다.

예제

#test2.php
<?php
include 'test1.php';
class testclass extends \myclass{
function hello(){
    echo "Hello PHP\n"; }
}
$obj1=new \myclass();
$obj1->hello();
$obj2=new testclass();
$obj2->hello();
?>

실행 결과

위 코드를 실행하면 다음과 같은 출력이 표시됩니다.

Hello World
Hello PHP

정리

네임스페이스를 사용하는 코드에서 전역 클래스나 함수에 접근할 때는 항상 역슬래시(\) 접두사를 붙이는 것이 좋습니다. 이렇게 하면 현재 네임스페이스에 같은 이름의 클래스가 존재하더라도 의도치 않은 충돌 없이 전역 클래스를 확실하게 참조할 수 있습니다.