>백엔드 개발 >PHP 튜토리얼 >PHP 매직 상수, 매직 함수, 사전 정의된 상수에 대한 자세한 소개와 예

PHP 매직 상수, 매직 함수, 사전 정의된 상수에 대한 자세한 소개와 예

王林
王林앞으로
2019-08-28 16:36:512247검색

1. 매직 상수

1, __construct()

는 객체를 인스턴스화할 때 호출되며 클래스 이름과 함수 이름을 가진 함수가 동시에 존재합니다. 다른 하나는 호출되지 않습니다.

2. __destruct()

는 객체를 삭제하거나 객체 작업이 종료될 때 호출됩니다.

3. __call()

객체가 메소드를 호출합니다. 존재하지 않으면 __call 함수가 호출됩니다

4.__get()

객체의 속성을 읽을 때 속성이 존재하면 속성 값이 직접 반환됩니다. , __get 함수가 호출됩니다.

5.__set()
객체의 속성을 설정할 때 속성이 존재하면 값이 직접 할당되고, 존재하지 않으면 __set 함수가 호출됩니다.

6. __toString()
객체를 인쇄할 때 호출됩니다. echo $obj; 또는 print $obj; __clone()

은 객체를 복제할 때 호출됩니다. 예: $t=new Test();$t1=clone $t;
8, __sleep()

serialize가 이전에 호출되었습니다. 객체가 상대적으로 크고 직렬화하기 전에 몇 가지 항목을 삭제하려는 경우 이 기능을 고려할 수 있습니다.
9. __wakeup()은 객체 초기화 작업을 수행하기 위해

unserialize할 때 호출됩니다.
10. __isset()

은 객체의 속성이 존재하는지 감지할 때 호출됩니다. 예: isset($c->name).
11.__unset()

객체의 속성을 설정 해제할 때 호출됩니다. 예: unset($c->name).
12.__set_state()

var_export가 호출될 때 호출됩니다. __set_state의 반환 값을 var_export의 반환 값으로 사용합니다.
13.__autoload()

객체를 인스턴스화할 때 해당 클래스가 없으면 이 메서드가 호출됩니다.
예:

1. 존재하지 않는 속성을 읽으려고 할 때 __get() 이 호출됩니다.

객체에 존재하지 않는 속성을 읽으려고 하면 PHP에서 오류 메시지를 표시합니다. 클래스에 __get 메소드를 추가하면 이 함수를 사용하여 Java의 리플렉션과 유사한 다양한 작업을 구현할 수 있습니다. __get() 当试图读取一个并不存在的属性的时候被调用。

如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。

class Test 
{ 
     public function __get($key) 
    { 
         echo $key . " 不存在"; 
    } 
} 

$t = new Test(); 
echo $t->name; 
输出:name不存在

2、__set() 当试图向一个并不存在的属性写入值的时候被调用。

class Test 
{ 
    public function __set($key, $value) 
    { 
         echo '对' . $key . "附值" . $value; 
    } 
} 

$t = new Test(); 
$t->name = "aninggo"; 
输出:对name赋值aninggo

3、__call() 当试图调用一个对象并不存在的方法时,调用该方法。

class Test 
{ 
    public function __call($Key, $Args) 
    { 
         echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); 
    } 
} 

$t = new Test(); 
$t->getName(aning, go);

程序将会输出:
您要调用的 getName 方法不存在。参数是:Array
(
     [0] => aning
     [1] => go
)

4、__toString() 当打印一个对象的时候被调用,这个方法类似于java的toString方法,当我们直接打印对象的时候回调用这个函数。

class Test 
{ 
     public function __toString() 
     { 
         return "打印 Test"; 
     } 
} 

$t = new Test(); 
echo $t;

运行echo $t;的时候,就会调用$t->__toString();从而程序将会输出:打印 Test;

5、__clone() 当对象被克隆时,被调用。

class Test 
{ 
     public function __clone() 
     { 
         echo "我被复制了!"; 
     }
}

$t = new Test(); 
$t1 = clone $t;

程序输出:我被复制了!

二、魔术常量

1、__LINE__ 
返回文件中的当前行号。
2、__FILE__ 
返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

3、__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
4、__FUNCTION__
返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
5、__CLASS__
返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

6、__TRAIT__
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 FooBar)。
7、__METHOD__
返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 格式:类名::方法名

8、__NAMESPACE__rrreee
2. 존재하지 않는 속성에 값을 쓰려고 할 때 __set()가 호출됩니다.

rrreee

3. __call() 객체에 존재하지 않는 메소드를 호출하려고 할 때 이 메소드를 호출하세요. rrreee4. 객체를 인쇄할 때 __toString()이 호출됩니다. 이 메서드는 객체를 직접 인쇄할 때 호출되는 Java의 toString 메서드와 유사합니다.

rrreee🎜echo $t;가 실행되면 $t->__toString();이 호출되므로 프로그램은 다음을 출력합니다. Print Test;🎜🎜5, __clone() 호출되면 복제됩니다. 🎜rrreee🎜🎜2. 매직 상수🎜🎜🎜🎜1. __LINE__ 🎜파일의 현재 줄 번호를 반환합니다. 🎜2. __FILE__ 🎜파일의 전체 경로와 파일 이름을 반환합니다. 포함 파일에 사용되는 경우 포함 파일 이름을 반환합니다. PHP 4.0.2부터 __FILE__에는 항상 절대 경로가 포함되어 있지만 이전 버전에서는 때때로 상대 경로가 포함되어 있었습니다. 🎜🎜3. __DIR__🎜파일이 위치한 디렉터리입니다. 포함된 파일 내에서 사용되는 경우 포함된 파일이 있는 디렉터리를 반환합니다. dirname(__FILE__)과 동일합니다. 디렉터리 이름은 루트 디렉터리가 아닌 이상 뒤에 슬래시를 포함하지 않습니다. (PHP 5.3.0의 새로운 기능) 🎜4. __FUNCTION__🎜 함수 이름을 반환합니다(PHP 4.3.0의 새로운 기능). PHP 5부터 이 상수는 정의된 대로 함수 이름을 반환합니다(대소문자 구분). PHP 4에서 이 값은 항상 소문자입니다. 🎜5. __CLASS__🎜클래스 이름을 반환합니다(PHP 4.3.0에 새로 추가됨). PHP 5부터 이 상수는 정의되었을 때 클래스의 이름을 반환합니다(대소문자 구분). PHP 4에서 이 값은 항상 소문자입니다. 🎜🎜6. __TRAIT__🎜Trait의 이름 (PHP 5.4.0에서 새로 추가됨) PHP 5.4부터 이 상수는 정의된 대로 특성의 이름을 반환합니다(대소문자 구분). 특성 이름에는 해당 특성이 선언된 범위(예: FooBar)가 포함됩니다. 🎜7. __METHOD__🎜 클래스의 메서드 이름을 반환합니다(PHP 5.0.0에 새로 추가됨). 정의된 대로 메서드의 이름을 반환합니다(대소문자 구분). 형식: 클래스 이름::메서드 이름 🎜🎜8, __NAMESPACE__🎜현재 네임스페이스의 이름(대소문자 구분). 이 상수는 컴파일 타임에 정의됩니다(PHP 5.3.0의 새로운 기능)🎜🎜🎜3. 사전 정의된 상수🎜🎜

PHP_VERSION PHP 프로그램 버전(예: 4.0.2)PHP_VERSION                    PHP 程序的版本,如4.0.2
PHP_OS                             执行PHP解释器的操作系统名称,如Windows
PHP_SAPI                          用来判断是使用命令行还是浏览器执行的,如果 PHP_SAPI=='cli' 表示是在命令行下执行
E_ERROR                          最近的错误处
E_WARNING                      最近的警告处
E_PARSE                           剖析语法有潜在问题处
E_NOTICE                         发生不寻常但不一定是错误处
PHP_EOL                          系统换行符,Windows是(rn),Linux是(/n),MAC是(r),自 PHP 4.3.10 和 PHP 5.0.2 起可用
DIRECTORY_SEPARATOR   系统目录分隔符,Windows是反斜线(),Linux是斜线(/)
PATH_SEPARATOR             多路径间分隔符,Windows是反斜线(;),Linux是斜线(:)
PHP_INT_MAX                    INT最大值,32位平台时值为2147483647,自 PHP 4.4.0 和 PHP 5.0.5 起可用
PHP_INT_SIZE                   INT字长,32位平台时值为4(4字节),自 PHP 4.4.0 和 PHP 5.0.5 起可用

四、PHP运行环境检测函数php_sapi_name()PHP_OS Windows

PHP_SAPI 등 PHP 인터프리터를 실행하는 운영 체제 이름 명령줄을 사용하여 실행되는지 아니면 브라우저를 사용하여 실행되는지 판단하는 데 사용됩니다. PHP_SAPI=='cli'가 명령줄에서 실행된다는 의미라면

E_ERROR                                              잠재적인 문제가 있는 문법을 분석합니다
E_Notice 특이하지만 반드시 잘못된 위치는 아닙니다
php_eol 시스템 변경, Windows는 (RN ), Linux는 (/n), MAC은 (r), PHP 4.3.10 및 PHP 5.0.2부터 사용 가능
DIRECTORY_SEPARATOR 시스템 디렉터리 구분 기호, Windows는 백슬래시(), Linux는 슬래시(/)
PATH_SEPARATOR code> 여러 경로 사이의 구분 기호, Windows는 백슬래시(;), Linux는 슬래시(:) <br><code>PHP_INT_MAX INT 최대값, 32비트 플랫폼 값은 2147483647이며 PHP 4.4부터 사용 가능합니다. 0 및 PHP 5.0.5
PHP_INT_SIZE ​ ​ ​ INT 단어 길이, PHP 4.4 0 및 PHP 5.0.5를 사용할 수 있으므로 32비트 플랫폼 값은 4(4바이트)입니다. . PHP 실행 환경 감지 함수 php_sapi_name()

이 함수는 PHP와 웹 서버 간의 인터페이스를 설명하는 소문자 문자열을 반환합니다.

PHP(서버 API, SAPI)에서 사용하는 인터페이스 유형을 설명하는 소문자 문자열을 반환합니다. 예를 들어, PHP의 CLI에서 이 문자열은 "cli"가 되고, Apache에서는 사용되는 특정 SAPI에 따라 여러 가지 다른 값이 있을 수 있습니다. 가능한 값은 다음과 같습니다:

aolserver, apache, apache2filter, apache2handler, caudium, cgi(PHP 5.3까지), cgi-fcgi, cli,continuity, embed, isapi, litespeed, milter, nsapi, phttpd, pi3web, roxen , thttpd, tux 및 webjames. 🎜SAPI: 서버 측 API는 CGI와 같은 것 같습니다. 각 서버에서 제공하는 API는 다를 수 있지만 모두 CGI를 제공합니다. 🎜 그러니까 CGI는 모든 서버가 갖춰야 할 SAPI라고 이해하시면 됩니다. Apache에는 자체 SAPI가 있고 IIS에도 자체 SAPI가 있습니다. 그러나 PHP는 각각의 SAPI를 지원하기 때문에 이러한 다양한 서버에서 작동할 수 있습니다. 🎜PHP-CLI: php 명령줄 인터페이스, php는 이 모드 또는 CGI 모드에서 작동할 수 있습니다. SAPI의 일종으로 CGI와 유사한 기능을 가지고 있습니다. 🎜🎜더 많은 관련 콘텐츠를 알고 싶거나 이러한 함수와 상수를 더 잘 익히고 싶다면 PHP 중국어 웹사이트를 방문하세요: 🎜PHP 비디오 튜토리얼🎜🎜

위 내용은 PHP 매직 상수, 매직 함수, 사전 정의된 상수에 대한 자세한 소개와 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제