PHP魔術函式 魔術常量 預定義常量

2021-06-27 04:14:36 字數 4053 閱讀 6921

一、魔術函式

1、__construct() 

例項化物件時被呼叫, 當__construct和以類名為函式名的函式同時存在時,__construct將被呼叫,另乙個以類名為函式名的函式不被呼叫

2、__destruct() 

當刪除乙個物件或物件操作終止時被呼叫。 (預設)

3、__call() 

物件呼叫某個方法, 若方法存在,則直接呼叫;若方法不存在,則會去呼叫__call函式。 (呼叫方法操作)

class

test 

方法不存在。你傳入的引數是:".

print_r

($args

,true

); } 

} $t

=new

test(); 

$t->

getname(aning

, go);

程式將會輸出:

您要呼叫的 getname 方法不存在。引數是:array

([0] => aning

[1] => go

)4、__get() 

讀取乙個物件的屬性時,若屬性存在,則直接返回屬性值; 若屬性不存在,則會呼叫__get函式。(讀取屬性操作)

class

test  } 

$t=newtest(); 

echo

$t->

name; 

就會輸出:name 不存在

5、__set() 

設定乙個物件的屬性時, 若屬性存在,則直接賦值;

若不存在,則會呼叫__set函式。(設定屬性操作)

class

test  } 

$t=newtest(); 

$t->

name ="

aninggo"; 

就會輸出:對 name 附值 aninggo

6、__tostring() 

列印乙個物件的時被呼叫。如echo $obj;或print $obj;

class

test  } 

$t=newtest(); 

echo$t;

7、__clone() 

轉殖物件時被呼叫。如:$t=new test();$t1=clone $t; 

class

test }$t

=new

test(); 

$t1=

clone$t;

程式輸出:我被複製了!

8、__sleep() 

serialize之前被呼叫。若物件比較大,想刪減一些東西

再序列化,可考慮一下此函式。

9、__wakeup() 

unserialize時被呼叫,做些物件的初始化工作。 

10、__isset() 

檢測乙個物件的屬性是否存在時被呼叫。如:isset($c->name)。 

11、__unset() 

unset乙個物件的屬性時被呼叫。如:unset($c->name)。 

12、__set_state() 

呼叫var_export時,被呼叫。用__set_state的返回值做為var_export的返回值。 

13、__autoload() 

例項化乙個物件時,如果對應的類不存在,則該方法被呼叫。

二、魔術常量

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 名包括其被宣告的作用區域(例如 foo\bar)。

7、__method__

返回類的方法名(php 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。 格式:類名::方法名

8、__namespace__

當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(php 5.3.0 新增)

三、預定義常量

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是(\r\n),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與web伺服器介面的小寫字串。

返回描述 php 所使用的介面型別(the server api, sapi)的小寫字串。

例如,cli 的 php 下這個字串會是 "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也有自己的。但是php能在這些不同的伺服器端工作,因為php支援了它們各自的sapi。

php-cli: php命令列介面,php可以工作在這種模式下也可以cgi模式。是sapi的一種,它和cgi提供的功能差不多。

PHP中的預定義常量 預定義變數 魔術常量

php中的預定義常量 預定義變數 魔術常量 1 預定義常量 核心預定義常量 是在php的核心中就定義好了的常量。區分大小寫。php version 內建常量,php程式的版本,如3.0.8 dev php os 內建常量,執行php解析器的作業系統名稱,如windows。php eol 系統換行符,...

PHP魔術常量 魔術函式

1 魔術常量 2 line 檔案中的當前行號 包含注釋行 3 file 檔案的完整路徑和檔名 4 function 當前所在的函式名稱 php 4.3.0 新增 5 class 當前所在的類的名稱 php 4.3.0 新增 6 method 當前所在的類的方法名 php 5.0.0 新增 7 核心預...

PHP中的魔術常量 預定義常量和預定義變數

1.魔術常量 php中有八個魔術常量,它們的值會隨著它們在 中的位置的改變而改變。這些特殊的常量不區分大小寫。2.預定義常量 核心預定義常量 是在php的核心中就定義好了的常量。區分大小寫。php version 返回php的版本。php os 返回 執行php直譯器的作業系統名稱。php eol ...