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()
가 호출됩니다.
3. __call()
객체에 존재하지 않는 메소드를 호출하려고 할 때 이 메소드를 호출하세요. rrreee4. 객체를 인쇄할 때 __toString()
이 호출됩니다. 이 메서드는 객체를 직접 인쇄할 때 호출되는 Java의 toString 메서드와 유사합니다.
__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.2PHP_OS
执行PHP解释器的操作系统名称,如WindowsPHP_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(서버 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!