수색…
비고
매직 상수는 __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의 경우: