수색…


비고

매직 상수는 __CONSTANTNAME__ 형식으로 구별됩니다.

현재 사용되는 위치에 따라 8 가지 마법 상수가 바뀝니다. 예를 들어, __LINE__ 의 값은 스크립트에서 사용 된 행에 따라 다릅니다.

이 특수 상수는 대소 문자를 구분하지 않으며 다음과 같습니다.

이름 기술
__LINE__ 파일의 현재 행 번호.
__FILE__ 심볼릭 링크가있는 파일의 전체 경로와 파일 이름이 해석되었습니다. 포함 안에 사용하면 포함 된 파일의 이름이 반환됩니다.
__DIR__ 파일의 디렉토리. Include 안에 사용될 경우, 포함 된 파일의 디렉토리가 리턴됩니다. 이것은 dirname(__FILE__) 과 동일합니다. 루트 디렉토리가 아니면이 디렉토리 이름에는 슬래시가 없습니다.
__FUNCTION__ 현재 함수 이름
__CLASS__ 클래스 이름. 클래스 이름은 그것이 선언 된 네임 스페이스를 포함합니다 (예 : Foo\Bar ). 특성 메서드에서 사용되면 __CLASS__ 은 특성이 사용되는 클래스의 이름입니다.
__TRAIT__ 특성 이름. 특성 이름은 그것이 선언 된 네임 스페이스를 포함합니다 (예 : Foo\Bar ).
__METHOD__ 클래스 메소드 이름.
__NAMESPACE__ 현재 네임 스페이스의 이름입니다.

이 상수의 가장 일반적인 사용 사례는 디버깅 및 로깅입니다.

__FUNCTION__과 __METHOD__의 차이점

__FUNCTION__ 은 함수의 이름 만 반환하는 반면 __METHOD__ 은 함수의 이름과 함께 클래스의 이름을 반환합니다.

<?php

class trick
{
    public function doit()
    {
        echo __FUNCTION__;
    }

    public function doitagain()
    {
        echo __METHOD__;
    }
}

$obj = new trick();
$obj->doit(); // Outputs: doit
$obj->doitagain();  // Outputs: trick::doitagain

차이점은 __CLASS__, get_class () 및 get_called_class ()입니다.

__CLASS__ magic constant는 매개 변수없이 호출 된 get_class() 함수와 동일한 결과를 반환하며 둘 다 정의 된 클래스 이름 (즉, 함수 호출 / 상수 이름을 작성한 곳)을 반환합니다.

반대로, get_class($this)get_called_class() 함수는 모두 인스턴스화 된 실제 클래스의 이름을 반환합니다.

<?php

class Definition_Class {

  public function say(){
     echo '__CLASS__ value: ' . __CLASS__ . "\n";
     echo 'get_called_class() value: ' . get_called_class() . "\n";
     echo 'get_class($this) value: ' . get_class($this) . "\n";
     echo 'get_class() value: ' . get_class() . "\n";
  }
  
}

class Actual_Class extends Definition_Class {}

$c = new Actual_Class();
$c->say();
// Output:
// __CLASS__ value: Definition_Class
// get_called_class() value: Actual_Class
// get_class($this) value: Actual_Class
// get_class() value: Definition_Class

파일 및 디렉토리 상수

현재 파일

__FILE__ 매직 상수를 사용하여 현재 PHP 파일의 이름을 절대 경로와 함께 얻을 수 있습니다. 이것은 주로 로깅 / 디버깅 기술로 사용됩니다.

echo "We are in the file:" , __FILE__ , "\n";

현재 디렉토리

현재 파일이있는 디렉토리의 절대 경로를 얻으려면 __DIR__ 마법 상수를 사용하십시오.

echo "Our script is located in the:" , __DIR__ , "\n";

현재 파일이있는 디렉토리의 절대 경로를 얻으려면 dirname(__FILE__) .

echo "Our script is located in the:" , dirname(__FILE__) , "\n";

현재 디렉토리를 얻는 것은 PHP 프레임 워크가 종종 기본 디렉토리를 설정하는 데 사용됩니다.

// index.php of the framework

define(BASEDIR, __DIR__); // using magic constant to define normal constant

// somefile.php looks for views:

$view = 'page';
$viewFile = BASEDIR . '/views/' . $view;

구분 기호

Windows 시스템은 / in 경로를 완벽하게 이해하므로 DIRECTORY_SEPARATOR 는 주로 경로 구문 분석시 사용됩니다.

매직 상수 외에도 PHP는 경로로 작업하기위한 몇 가지 고정 상수를 추가합니다.

  • DIRECTORY_SEPARATOR 패스 내의 디렉토리를 DIRECTORY_SEPARATOR 정수. * / nix에서 값을 가져오고 Windows에서는 \ 를 사용합니다. 보기가있는 예는 다음을 사용하여 다시 작성할 수 있습니다.
$view = 'page';
$viewFile = BASEDIR . DIRECTORY_SEPARATOR .'views' . DIRECTORY_SEPARATOR . $view;
  • $PATH 환경 변수에서 경로를 분리하는 데 PATH_SEPARATOR 상수를 거의 사용 PATH_SEPARATOR . 그것은이다 ; Windows의 경우 :


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow