PHP 마술 변수 와 마술 함수 상세 설명

마술 변수
PHP 는 실행 중인 모든 스 크 립 트 에 대량의 미리 정 의 된 상수 를 제공 합 니 다.
그러나 많은 상수 가 서로 다른 확장 라 이브 러 리 로 정의 되 어 있 습 니 다.이 확장 라 이브 러 리 를 불 러 올 때 만 나타 나 거나 동적 으로 불 러 온 후에 도 컴 파일 할 때 포함 되 어 있 습 니 다.
8 개의 마술 상수 가 있 습 니 다.그들의 값 은 코드 의 위치 에 따라 달라 집 니 다.
예 를 들 어LINE__ 스 크 립 트 에 있 는 줄 에 의존 해서 값 을 결정 합 니 다.이 특수 한 상수 들 은 대소 문 자 를 구분 하지 않 습 니 다.다음 과 같 습 니 다.
__LINE__
파일 의 현재 줄 번호 입 니 다.
실례:

<?php
echo ' “ '  . __LINE__ . ' ” ';
?>
위의 인 스 턴 스 출력 결 과 는:

“ 2 ”
__FILE__
파일 의 전체 경로 와 파일 이름 입 니 다.포 함 된 파일 에 사용 하면 포 함 된 파일 이름 을 되 돌려 줍 니 다.
PHP 4.0.2 부터FILE__ 항상 절대적 인 경 로 를 포함 합 니 다.(기호 연결 이 라면 분석 후의 절대적 인 경로 입 니 다)이전 버 전 은 상대 적 인 경 로 를 포함 할 때 가 있 습 니 다.
실례:

<?php
echo ' “ '  . __FILE__ . ' ” ';
?>
위의 인 스 턴 스 출력 결 과 는:

“ E:\wamp\www\test\index.php ”
__DIR__
파일 이 있 는 디 렉 터 리.포 함 된 파일 에 사용 하면 포 함 된 파일 이 있 는 디 렉 터 리 를 되 돌려 줍 니 다.
그것 은 dirname(FILE__)。루트 디 렉 터 리 가 아 닌 디 렉 터 리 의 이름 은 끝 에 있 는 슬 래 쉬 를 포함 하지 않 습 니 다.(PHP 5.3.0 에 추 가 됨)
실례:

<?php
echo ' “ '  . __DIR__ . ' ” ';
?>
위의 인 스 턴 스 출력 결 과 는:

“ E:\wamp\www\test ”
__FUNCTION__
함수 이름(PHP 4.3.0 추가).PHP 5 부터 이 상수 가 정 의 된 함수 의 이름 을 되 돌려 줍 니 다(대소 문자 구분).PHP 4 에서 이 값 은 항상 소문 자 입 니 다.
실례:

<?php
function test() {
 echo  ' :' . __FUNCTION__ ;
}
test();
?>
위의 인 스 턴 스 출력 결 과 는:

:test
__CLASS__
클래스 이름(PHP 4.3.0 추가).PHP 5 부터 이 상수 가 정의 되 었 을 때의 이름 을 되 돌려 줍 니 다(대소 문자 구분).
PHP 4 에서 이 값 은 항상 소문 자 입 니 다.클래스 이름 은 명 시 된 역할 영역(예 를 들 어 Foo\Bar)을 포함 합 니 다.PHP 5.4 부터 주의 하 세 요CLASS__ trait 에 도 효과 가 있 습 니 다.trait 방법 에 사용 할 때CLASS__ trait 방법 을 호출 하 는 클래스 의 이름 입 니 다.
실례:

<?php
class test {
 function _print() {
  echo ' :'  . __CLASS__ . "<br>";
  echo  ' :' . __FUNCTION__ ;
 }
}
$t = new test();
$t->_print();
?>
위의 인 스 턴 스 출력 결 과 는:
test
함수 이름:print
__TRAIT__
Trait 이름(PHP 5.4.0 추가).PHP 5.4.0 부터 PHP 는 코드 를 재 활용 하 는 방법 을 실현 하여 traits 라 고 합 니 다.
Trait 이름 은 명 시 된 역할 영역(예 를 들 어 Foo\Bar)을 포함 합 니 다.
기본 클래스 에서 물 려 받 은 멤버 들 이 삽 입 된 세이 월 드 트 레이 트 의 마 이 헬 로 월 드 방법 으로 덮 여 있 습 니 다.그 행동 은 MyHelloWorld 클래스 에서 정 의 된 방법 과 일치 합 니 다.우선 순 위 는 현재 클래스 의 방법 이 trait 방법 을 덮어 쓰 고 trait 방법 은 기본 클래스 의 방법 을 덮어 씁 니 다.

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}
 {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}
class MyHelloWorld extends Base {
   
}
$o = new MyHelloWorld();
$o->sayHello();
?>
이상 루틴 출력:

Hello World!
__METHOD__
클래스 의 방법 명(PHP 5.0.0 추가).이 방법 이 정 의 된 이름 을 되 돌려 줍 니 다.
실례:

<?php
function test() {
 echo  ' :' . __METHOD__ ;
}
test();
?>
위의 인 스 턴 스 출력 결 과 는:

:test
__NAMESPACE__
현재 네 임 스페이스 의 이름(대소 문자 구분).이 상 수 는 컴 파일 할 때 정 의 됩 니 다(PHP 5.3.0 추가).
실례:

<?php
namespace MyProject;
echo ' :"', __NAMESPACE__, '"'; // "MyProject"
?>
위의 인 스 턴 스 출력 결 과 는:

:"MyProject"
마술 함수
__construct()
    실례 화 대상 이 호출 될 때,
    당construct 와 클래스 이름 을 함수 로 하 는 함수 가 동시에 존재 할 때construct 는 호출 되 고 다른 하 나 는 호출 되 지 않 습 니 다.
__destruct()
    대상 이나 대상 을 삭제 할 때 호출 됩 니 다.
__call()
    대상 이 어떤 방법 을 호출 하면,
    방법 이 존재 하면 직접 호출 합 니 다.
    존재 하지 않 으 면 호출call 함수.
__get()
    대상 의 속성 을 읽 을 때,
    속성 이 존재 하면 속성 값 을 직접 되 돌려 줍 니 다.
    존재 하지 않 으 면 호출get 함수.
__set()
    대상 의 속성 을 설정 할 때,
    속성 이 존재 하면 직접 값 을 부여 합 니 다.
    존재 하지 않 으 면 호출set 함수.
__toString()
    대상 을 인쇄 할 때 호출 됩 니 다.echo$obj;또는 print$obj;
__clone()
    복제 대상 이 호출 되 었 습 니 다.예:$t=new Test();$t1=clone $t;
__sleep()
    serialize 가 호출 되 었 습 니 다.대상 이 비교적 크 면 동 동 을 조금 줄 이 고 서열 화 하려 면 이 함 수 를 고려 해 보 세 요.
__wakeup()
    unserialize 에서 호출 되 어 대상 의 초기 화 작업 을 합 니 다.
__isset()
    대상 의 속성 이 존재 하 는 지 확인 할 때 호출 됩 니 다.예:isset($c->name).
__unset()
    unset 대상 의 속성 이 호출 되 었 습 니 다.예:unset($c->name).
__set_state()
    var 호출export 시 호출 됩 니 다.용set_state 의 반환 값 을 var 로 합 니 다.export 의 반환 값 입 니 다.
__autoload()
    대상 을 예화 할 때 해당 하 는 클래스 가 존재 하지 않 으 면 이 방법 이 호출 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.어린이 들 은 마술 변수 와 마술 함수 에 대해 새로운 인식 을 가지 게 되 었 습 니까?본 고의 내용 을 좋아 하 시기 바 랍 니 다.

좋은 웹페이지 즐겨찾기