首頁 > 後端開發 > php教程 > php魔術變數與魔術函數實例教學匯總

php魔術變數與魔術函數實例教學匯總

WBOY
發布: 2016-07-25 08:51:44
原創
1191 人瀏覽過
  1. echo '這是第「 ' . __LINE__ . ' 」行';
  2. ?>
?>

複製程式碼

輸出結果為: 這是第 “ 2 ” 行
__FILE__ 文件的完整路徑和檔名。如果用在被包含檔案中,則傳回被包含的檔案名稱。 自 PHP 4.0.2 起,__FILE__ 總是包含一個絕對路徑(如果是符號連接,則是解析後的絕對路徑),而在此之前的版本有時會包含一個相對路徑。
  1. 例:
echo '文件位於「 ' . __FILE__ . ' 」 ';
?>

複製程式碼

輸出結果為: 該文件位於 “ E:wampwwwtestindex.php ”

__DIR__ 文件所在的目錄。如果用在被包含檔案中,則傳回被包含的檔案所在的目錄。 它等價於 dirname(__FILE__)。除非是根目錄,否則目錄中名不包括末尾的斜杠。 (PHP 5.3.0新增)

例:

  1. echo '該檔案位於「 ' . __DIR__ . ' 」 ';
  2. ?>

  1. 複製程式碼
  2. 輸出結果為: 該檔案位於 “ E:wampwwwtest ”
  3. __FUNCTION__ 函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常數傳回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
  4. 例:
function test() {
echo '函數名為:' . __FUNCTION__ ;

}

test ();

?>

複製程式碼
    輸出結果為: 函數名為:test
  1. __CLASS__ 類別的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常數傳回該類別被定義時的名字(區分大小寫)。 在 PHP 4 中該值總是小寫字母的。類別名稱包括其被宣告的作用區域(例如 FooBar)。注意自 PHP 5.4 起 __CLASS__ 對 trait 也起作用。當用在 trait 方法中時,__CLASS__ 是呼叫 trait 方法的類別的名字。
  2. 例:
  3. class test {
  4. function _print() {
  5. echo '類別名稱為:' . __CLASS__ . "";
  6. echo '函數名稱為:' . __FUNCTION__ ;
  7. }
  8. }
  9. $t = new test();
  10. $t->_print();
  11. ?>
複製程式碼

輸出結果為: 類別名為:test 函數名稱為:_print

__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 實作了程式碼重複使用的一個方法,稱為 traits。 Trait 名包括其被聲明的作用區域(例如 FooBar)。 從基底類別繼承的成員被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆寫。 其行為 MyHelloWorld 類別中定義的方法一致。 優先順序是目前類別中的方法會覆寫 trait 方法,而 trait 方法又覆寫了基底類別中的方法。

例:

  1. class Base {
  2. public function sayHello() {
  3. echo 'Hello ';
  4. }
  5. }
}
} } }
}

}

}

}

}

}

}
}
}
    }
  1. }
  2. }
  3. }
  4. }
  5. ; >}
{
public function sayHello() { parent::sayHello(); echo 'World!';
}}class MyHelloWorld extends Base { }$o = new MyHelloWorld();$o->sayHello();?>複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼複製碼>輸出: Hello World! __METHOD__ 類別的方法名稱(PHP 5.0.0 新加)。傳回該方法被定義時的名字(區分大小寫)。 例: function test() { echo '函數名為:' . __METHOD__ ;}test ();?>複製程式碼輸出結果為: 函數名為:test __NAMESPACE__ 目前命名空間的名稱(區分大小寫)。此常數是在編譯時定義的(PHP 5.3.0 新增)。 例: namespace MyProject;echo '命名空間為:"', __NAMESPACE__, '"'; // 輸出"Project "?>複製程式碼

輸出結果為: 命名空間為:"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() 實例化一個物件時,如果對應的類別不存在,則該方法被呼叫。



來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板