PHP幾種常見魔術方法與魔術變數解析

2021-09-19 20:07:24 字數 2266 閱讀 1719

php幾種常見魔術方法與魔術變數解析

先不多說,直接上**,如下:

1

class

demo210

11//

__call()用來獲取沒有定義的function

12public

function __call($name, $arguments)13

1617

//獲取私有變數

18public

function __get($name)19

2324

//通過關鍵字 clone 轉殖乙個物件時該物件呼叫__clone()方法

25public

function

__clone()

2629

30//

__set()設定私有變數的值

31public

function __set($name, $value)32

3637

//————callstatic()呼叫沒有被定義的static靜態function

38public

static

function __callstatic($name, $arguments)39

4344

//刪除類物件時候自動呼叫

45public

function

__destruct()

4650

5152}53

54$class = new

demo();

55$class->success();

56$class->succ = 111;

57echo

$class->succ;

58echo

$class->str;

59echo '

';60

$obj = clone

$class;61

print_r($obj

);62

echo '

';63

$class::end();

執行結果:

start

success_call

111str_get

clone

demo

object ( [str:demo:private] => str [succ] => 111)

end_classstatic

endend

方法總結:

1. __set(),__get(),__isset(),__unset()可以歸之為一類,適用於私有變數的設定、取值、判斷、刪除的操作。

2. __construct()建構函式,__desctruct()析構函式,例項化類的時候就會產生,有一點不同,構造在最前面,

析構函式在最後面

3. 當呼叫class中沒有定義的方法時,會報錯fail error,如果class中定義了__call(),會直接呼叫__call()方法進行操作。

例如:$class->success('data');類中的__call方法開始執行把引數轉換為陣列形式array([0] => 'data');

__callstatic()方法同理,只是對沒有定義的靜態方法起作用。

幾種常見的魔術變數:

123

//__line__ 當前指令碼行號

4echo

__line__.'';5

6//__file__ 檔案的完整路徑與檔名

7echo

__file__.'';8

9//__dir__ 檔案所在目錄

10echo __dir__.'

';11

12class

test 29}

3031 (new test())->demo();

3233

trait helloworld 38}

3940

class

theworldisnotenough

43$o = new

theworldisnotenough();

44$o->sayhello();

輸出結果:

12g:\phpstudy\phptutorial\www\phpdemo\03-08.php

g:\phpstudy\phptutorial\www\phpdemo

demo

PHP的魔術方法與魔術常量

魔術常量 line 檔案中的當前行號。file 檔案的完整路徑和檔名。如果用在被包含檔案中,則返回被包含的檔名 dir 檔案所在的目錄。除非是根目錄,否則目錄中名不包括末尾的斜槓。function 返回該函式被定義時的名字 區分大小寫 class 返回該類被定義時的名字 區分大小寫 trait 常量...

php魔術常量,魔術方法

魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...

invoke 魔術 PHP 魔術方法

php 魔術方法 構造方法 construct 析構方法 destruct get 與 set unset call 和 callstatic sleep 和 wakeup clone tostring invoke set state debuginfo construct 這個方法應該是最常用的...