> 백엔드 개발 > PHP 튜토리얼 > PHP 매직 변수 사용법에 대한 자세한 설명

PHP 매직 변수 사용법에 대한 자세한 설명

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-05-16 20:32:06
원래의
1133명이 탐색했습니다.

이 기사의 예에서는 php 매직 변수의 사용법을 설명합니다. 그 중 __DIR__은 php5.3의 새로운 기능이며 참조용으로 모든 사람과 공유됩니다. 구체적인 사용량 분석은 다음과 같습니다.

시스템 상수

__FILE__ 현재 파일 이름
__LINE__ 현재 줄 번호
__FUNCTION__ 현재 함수 이름
__CLASS__ 현재 수업 이름
__METHOD__ 현재 객체의 메소드 이름

상세 분석

1.__FILE__

파일의 전체 경로 및 파일 이름입니다. 포함된 파일 내에서 사용되는 경우 포함된 파일의 이름을 반환합니다. PHP 4.0.2부터 __FILE__에는 항상 절대 경로(또는 기호 링크의 경우 확인된 절대 경로)가 포함되어 있는 반면, 그 이전 버전에는 때때로 상대 경로가 포함되어 있었습니다.
PHP 상수 dirname(__file__)
__FILE__: PHP 매직 상수라고도 하며 절대 경로를 포함하여 현재 실행 중인 PHP 스크립트의 전체 경로와 파일 이름을 반환합니다.

1) dirname(__FILE__) 함수는 스크립트가 위치한 경로를 반환합니다. 네트워크 업데이트
예를 들어 b.php 파일에는 다음 내용이 포함되어 있습니다.

코드 복사 코드는 다음과 같습니다.
$basedir = 디렉토리 이름(__FILE__)
에코 $basedir
//이 파일이 위치한 절대 경로가 페이지에 출력됩니다! ?>

제가 수행한 테스트 결과는 다음과 같습니다: E:websiteothertestcms
이는 asp
에서 server.mappth를 사용하는 것과 동일합니다. b.php가 a.php 파일에 의해 참조되는 경우 다른 디렉토리에 필요하거나 포함됩니다. $basedir 변수의 내용은 여전히 ​​b.php가 있는 폴더의 경로입니다. a.php 파일이 있는 디렉토리가 되는 대신.
2) dirname(__FILE__)은 일반적으로 파일이 있는 현재 디렉터리에서 시스템 루트 디렉터리까지 디렉터리 구조를 반환합니다.

현재 파일 이름은 반환되지 않습니다. dirname(__FILE__)은 .(현재 디렉터리)을 반환할 수도 있습니다. [이유는 b.php 파일이 http.conf 또는 PHP 구성 개발 환경의 기본 WEB 디렉터리에 있기 때문입니다.

코드 복사 코드는 다음과 같습니다.
/**
공개 구성 파일에서 루트 디렉터리를 설정하면 자주 이동하는 것에 대해 걱정할 필요가 없습니다.
*/
정의('ROOT_PATH', dirname(__FILE__) .DIRECTORY_SEPARATOR);
에코 ROOT_PATH;
에코 "
";
에코 __FILE__;
에코 "
";
echo dirname(__FILE__);
에코 "
";
echo dirname(dirname(__FILE__));
?>

2.__LINE__ 파일의 현재 줄 번호입니다. 이 변수는 오류를 디버깅할 때 매우 유용하며 순전히 개인적인 의견입니다.


코드 복사 코드는 다음과 같습니다.
echo __LINE__; //__LINE__이 위치한 줄번호 표시
?>

3.__클래스__
클래스 이름, PHP5에서 반환된 결과는 대소문자를 구분합니다

코드 복사 코드는 다음과 같습니다.
클래스 기본_클래스
{
함수 say_a()
{
echo "'a' – " __CLASS__라고 말했습니다.";
}
함수 say_b()
{
echo "'b' – " . get_class($this) "
";
}
}
파생 클래스 클래스는 베이스 클래스를 확장합니다
{
함수 say_a()
{
parent::say_a();
echo "'a' – " __CLASS__라고 말했습니다.";
}
함수 say_b()
{
parent::say_b();
echo "'b' – " . get_class($this) "
";
}
}
$obj_b = 새로운 파생_클래스();
$obj_b->say_a();
echo "
";
$obj_b->say_b();
?>
결과는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
'a' – base_class를 말했습니다
'a' – 파생 클래스가 말했습니다
'b' – 파생 클래스가 말했습니다
'b' – 파생 클래스가 말했습니다

때로는 __CLASS__ 대신 get_class를 사용할 수 있습니다.

4. __FUNCTION__ 및 __METHOD__

__FUNCTION__: 함수 이름, php5에서 반환된 결과는 대소문자를 구분합니다
__METHOD__: 메서드의 함수 이름, php5에서 반환된 결과는 대소문자를 구분합니다.
둘 다 획득 방법의 이름입니다. 차이점은 무엇입니까?

코드 복사 코드는 다음과 같습니다.
수업 테스트
{
함수 a()
{
에코 __FUNCTION__;
에코 "
";
에코 __METHOD__;
}
}
기능 좋음 (){
에코 __FUNCTION__;
에코 "
";
에코 __METHOD__;
}
$test = 새로운 테스트();
$test->a();
에코 "
";
좋아요();
?>

반환 결과:

테스트::a
좋아요
좋아요
격리된 함수와 비교하면 둘 다 함수 이름을 추출할 수 있습니다. 클래스에 있는 메서드인 경우 __FUNCTION__은 클래스의 메서드 이름만 추출할 수 있지만 __METHOD__는 메서드 이름만 추출할 수 없습니다. 메소드 이름

5. __DIR__

파일이 위치한 디렉터리입니다. 포함된 파일 내에서 사용되는 경우 포함된 파일이 있는 디렉터리를 반환합니다. dirname(__FILE__)과 동일합니다. 디렉터리 이름은 루트 디렉터리가 아닌 이상 뒤에 슬래시를 포함하지 않습니다. (PHP 5.3.0의 새로운 기능)
5.3 이전 버전에서 __DIR__을 사용하려면 이렇게 하면 됩니다.

코드 복사 코드는 다음과 같습니다.
if(!definated('__DIR__')) {
$iPos = strrpos(__FILE__, "/");
정의("__DIR__", substr(__FILE__, 0, $iPos) . "/");
}
?>

6. __NAMESPACE__

현재 네임스페이스의 이름입니다(대소문자 구분). 이 상수는 컴파일 타임에 정의됩니다(PHP 5.3.0의 새로운 기능)

7. __정적__

클래스의 정적 메서드를 호출하면 클래스 이름이 대소문자를 구분하여 반환됩니다. 상속으로 호출되면 상속에 정의되어 있는지 여부에 관계없이 상속된 클래스 이름을 반환할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
//php5.3
클래스 모델
{
공개 정적 함수 find()
{
에코 __STATIC__;
}
}
클래스 제품 확장 모델 {}
클래스 사용자 확장 모델 {}
제품::find() // "제품"
사용자::find() // "사용자"
?>

추가: PHP의 매직 메소드

__construct() 객체를 인스턴스화할 때 객체의 이 메서드가 먼저 호출됩니다.
__destruct() 이 메서드는 객체가 삭제되거나 객체 작업이 종료될 때 호출됩니다.
__get()은 존재하지 않는 속성을 읽으려고 할 때 호출됩니다.
__set()은 존재하지 않는 속성에 값을 쓰려고 할 때 호출됩니다.
__call() 이 메소드는 객체에 존재하지 않는 메소드를 호출하려고 할 때 호출됩니다.
__toString()은 객체를 인쇄할 때 호출됩니다
__clone()은 객체가 복제될 때 호출됩니다
__isset()
__unset()
__autoload($classname)
__수면()
__wakeup()

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

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