2021年6月29日 星期二

02_常量&魔術常量

PHP兩種定義方式:
    使用 define() 函數定義
    使用 const 關鍵字定義
 
define(name, value, case-insensitive)
    name:指定常量名稱。
    value:指定常量值。
    case-insensitive:默認值爲false。默認情況下區分大小寫。
<?php 
    define( "MESSAGE","Hello YiiBai PHP"); 
echo MESSAGE, "<br/>"; 
?>
----------- 結果 -----------
Hello YiiBai PHP
<?php 
    define( "MESSAGE","Hello YiiBai PHP",true); //指定不分大小寫
echo MESSAGE,"<br/>"; 
echo message,"<br/>";
?>
----------- 結果 -----------
Hello YiiBai PHP
Hello YiiBai PHP
 
const關鍵字
是一個語言構造不是一個函數。
比define()快一點,因爲它沒有返回值。
要區分大小寫
 
 
魔術常量
- PHP中的預定義常量, 依使用而改變
- 以雙下劃線(__)開頭,以雙下劃線(__)結尾。
- 不分大小寫
 
__LINE__
使用當前行號。
 
__FILE__
文件的完整路徑和文件名。 如果它在include中使用,則返回包含文件的名稱。
 
__DIR__
文件的完整目錄路徑。 等同於dirname(__file__)。 除非它是根目錄,否則它沒有尾部斜槓。 它還解析符號鏈接。
 
__FUNCTION__
表示使用它的函數名稱。如果它在任何函數之外使用,則它將返回空白。
 
__CLASS__
表示使用它的函數名稱。如果它在任何函數之外使用,則它將返回空白。
 
__TRAIT__
表示使用它的特徵名稱。 如果它在任何函數之外使用,則它將返回空白。 它包括它被聲明的命名空間。
 
__METHOD__
表示使用它的類方法的名稱。方法名稱在有聲明時返回。
 
__NAMESPACE__
表示當前命名空間的名稱。
<?php
 
    echo "<h3>Example for __LINE__</h3>"; 
    echo "You are at line number " . __LINE__ . "<br><br>";// print Your current line number i.e;3 
    echo "<h3>Example for __FILE__</h3>"; 
    echo __FILE__ . "<br><br>";//print full path of file with .php extension 
    echo "<h3>Example for __DIR__</h3>"; 
    echo __DIR__ . "<br><br>";//print full path of directory where script will be placed 
    echo dirname(__FILE__) . "<br><br>"; //its output is equivalent to above one. 
    echo "<h3>Example for __FUNCTION__</h3>"; 
    //Using magic constant inside function. 
    function cash(){ 
        echo 'the function name is '. __FUNCTION__ . "<br><br>";//the function name is cash. 
    } 
 
    cash(); 
 
    //Using magic constant outside function gives the blank output. 
    function test_function(){ 
        echo 'HYIIII'; 
    } 
 
    test_function(); 
    echo  __FUNCTION__ . "<br><br>";//gives the blank output. 
 
    echo "<h3>Example for __CLASS__</h3>"; 
    class abc 
    { 
        public function __construct() { 
            ; 
        } 
 
        function abc_method(){ 
        echo __CLASS__ . "<br><br>";//print name of the class abc. 
        } 
    } 
    $t = new abc; 
    $t->abc_method();
 
    class first{ 
        function test_first(){ 
            echo __CLASS__;//will always print parent class which is first here. 
        } 
    } 
 
    class second extends first 
    { 
        public function __construct() { 
            ; 
        } 
    } 
    $t = new second; 
    $t->test_first(); 
 
    echo "<h3>Example for __TRAIT__</h3>"; 
    trait created_trait{ 
        function abc(){ 
            echo __TRAIT__;//will print name of the trait created_trait 
        } 
    } 
 
    class anew{ 
        use created_trait; 
    } 
    $a = new anew; 
    $a->abc(); 
    echo "<h3>Example for __METHOD__</h3>"; 
 
    class meth{ 
        public function __construct() { 
            echo __METHOD__ . "<br><br>";//print meth::__construct 
        } 
        public function meth_fun(){ 
            echo __METHOD__;//print meth::meth_fun 
        } 
    } 
    $a = new meth; 
    $a->meth_fun(); 
 
    echo "<h3>Example for __NAMESPACE__</h3>"; 
    class name{ 
        public function __construct() { 
            echo 'This line will be printed on calling namespace'; 
        } 
    } 
    $clas_name= __NAMESPACE__ .'\name'; 
    $a = new $clas_name; 
 
?>
 
 
 
 
 
 

沒有留言:

張貼留言

(Centos-7s) 更新: 網卡名稱改回 eth0 的方法

將 CentOS 7 網卡名稱修改, 用回 Eth0 的方法:   1) # vi /etc/sysconfig/grub 內容大概是這樣:   GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release...