iT邦幫忙

2021 iThome 鐵人賽

DAY 7
1

常量(Constant)聽起來與變量相似,但就容易混淆。
變量的值會改變而稱為變量,那相對於變量的常量,則表示是恆常不變的值,因而稱作常量,常量類似於變量,但是常量一旦被定義就無法更改或撤銷定義,那麼問題是在 PHP 中如何定義常量呢?

常量

常量是一個簡單值的識別符號(名字)。在指令碼執行期間該值不能被修改和刪除,常量可以不用理會變量範圍的規則而在任何地方定義和訪問。
常量預設為大小寫敏感,有分別。

  • 常量命名規則:
  1. 常量命名的前面沒有符號 $
  2. 通常以大寫字母表示
  3. 由字母、數字、下劃線組成,不能以數字開頭
  4. 複雜的常量名可使用下劃線分隔表示
  5. 必須用函式define()定義
  6. 定義完後其值不能再改變了
  • 系統常量
    在系統中有些東西程序員會使用到,但不允許被改變,系統常量就是PHP已經定義好的常量,我們可以直接拿來使用。

PHP_VERSION:PHP版本號,當前解析器的版本號。它可以告訴我們當前PHP解析器的版本號,我們可以提前知道我們的PHP代碼是否可被該PHP解析器解析。

PHP_OS:執行當前PHP版本的操作系統名稱。

  • 魔術常量(Magic constant)
    PHP定義了 8 個 魔術常量,他們的值隨著他們在程式碼中的位置改變而改變的
    系統有一些東西是在變化的,但不允許隨意變化,魔術常量隨著環境變化而變化,但這種變化是程序員不能控制的

魔術常量以雙下劃線開始、以雙下劃線結束

LINE:當前所在行數
DIR:當前文件所在路徑(絕對路徑)
FILE:當前文件所在路徑(絕對路徑,包含文件名稱)
FUNCTION:函數內部使用,所處函數名,區分大小寫,包含函數的名字
CLASS:類內部使用,表示類名
NAMESPACE:命名空間內部使用,表示當前所屬命名空間
METHOD:類內部方法使用,表示當前方法名字
TRAIT :代碼覆用的一個方法,稱為traits

PHP 實現了代碼復用的一個方法,稱為traits。

Trait 包括其被聲明的作用區域,從基類繼承的成員被插入的winnie,Trait 中的Hellowinnie 方法所覆蓋,與Hellowinnie 類中定義的方法一致,優先順序是當前類中的方法會覆蓋trait 方法,而trait 方法又覆蓋了基類中的方法。

<?php
namespace MyProject;

echo __LINE__;
echo '<hr>';
echo __DIR__;
echo '<hr>';
echo __FILE__;
echo '<hr>';
echo __NAMESPACE__;
echo '<hr>';

// __CLASS__  __FUNCTION__ __METHOD__
class test {
    function hello() {
        echo '類名:'  . __CLASS__ . "<br>";
        echo  '函數名:' . __FUNCTION__. "<br>" ;
        echo '方法名:'.__METHOD__. "<br>";
    }
}
$t1 = new test();
$t1->hello();

echo '<hr>';

// __TRAIT__ 
class Base {
    public function Hello() {
        echo 'Hello ';
    }
}
 
trait winnie {
    public function Hello() {
        parent::Hello();
        echo 'winnie!';
    }
}

class Hellowinnie extends Base {
    use winnie;
}

$test = new Hellowinnie();
$test->Hello();

Day7 Winnie的聊天室

今天介紹常量,包含語法、命名規則和魔術常量,變量的好處是可以隨時根據需求改變變量所代表的數據,常量則是一開始定義並賦值後,在整個腳本中不允許改變的量,這是兩個蠻大的差別唷!
今天就到這裡~~ 明天見><


上一篇
Day6 PHP變量
下一篇
Day8 PHP數據類型
系列文
PHP 語法通關30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言