日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

const没define好用 php,3分钟短文|PHP 定义常量,我该用define还是const?这下不迷茫了...

發布時間:2023/12/10 php 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 const没define好用 php,3分钟短文|PHP 定义常量,我该用define还是const?这下不迷茫了... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

我們今天說一下 PHP 編程中,定義一個常量所使用的兩種方法。有哪些區別,以及哪種是最佳實踐?

問題

有開發者說,我在學習編寫 PHP,可是定義常量的方法很是讓人迷惑。比如有下面這樣的寫法:

define('FOO', 1);const FOO = 1;

而且在框架中,也大量地摻雜著兩種定義方法的混用。到底哪一個好?

深層原因

對于 PHP5.3 及以上,定義一個常量有兩種方法,一個是用 const 關鍵字,一個是使用 define 函數。比如這樣寫:

const FOO = 'BAR';define('FOO', 'BAR');

這兩種方式之間的根本區別是const在編譯時定義常量,而define在運行時定義常量。這導致了大多數const的缺點。下面列舉一些:

1 - const不能用于有條件地定義常量。要定義全局常量,必須在最外層范圍中使用它:

if (...) { const FOO = 'BAR'; // 無效}// 但是if (...) { define('FOO', 'BAR'); // 有效}

一種常見的應用是檢查常量是否已經定義:

if (!defined('FOO')) {define('FOO', 'BAR');}

2 - const只能接受一個靜態標量(數字,字符串或其它常量值true,false,null,__FILE__),而define()可使用任何表達式。

const BIT_5 = 1 << 5; // VPHP 5.6 以下版本均無效define('BIT_5', 1 << 5); // 有效

3 - const只能采用簡單的常量名稱,而define()接受任何表達式作為名稱。這樣可以執行以下操作:

for ($i = 0; $i < 32; ++$i) { define('BIT_' . $i, 1 << $i);}

4 - consts始終區分大小寫,而define()允許您通過將其true作為第三個參數傳遞來定義不區分大小寫的常量。

define('FOO', 'BAR', true);echo FOO; // BARecho foo; // BAR

const 的優點

除了上一節所說的 const 的缺點外,我一般都會堅持使用 const。因為它實在太好用,太可愛了。

1 - const使代碼更好讀。

它是一種語言構造,而不是函數,并且與您在類中定義常量的方式保持一致。

2 - const作為一種語言構造,可以通過自動化工具進行靜態分析。

3 - const在當前名稱空間中定義一個常量,同時define()必須傳遞完整的名稱空間名稱:

namespace A\B\C;// 定義常量 A\B\C\FOO:const FOO = 'BAR';define('A\B\C\FOO', 'BAR');

4 - 由于PHP 5.6const常量也可以是數組,而define()尚不支持數組。但是,PHP 7中的兩種情況都支持數組。

const FOO = [1, 2, 3]; // PHP 5.6 及以上有效define('FOO', [1, 2, 3]); // PHP 7.0 及以上有效

5 - const還可以在類或接口內使用它來定義類常量或接口常量。define沒這功能。

class Foo {const BAR = 2; // 完全支持}// 但是class Baz {define('QUX', 2); // 不能這么寫}

寫在最后

除非特別需要,我一般不使用 define 定義常量,可讀性不強。

加上框架中強制的 OOP 方式,使得我們自覺不自覺地形成 const 定義類常量的習慣。而且對于 IDE 的自動索引也極為友好,寫代碼順溜的不得了。

Happy coding :_)

我是 @程序員小助手 ,持續分享編程知識,歡迎關注。

總結

以上是生活随笔為你收集整理的const没define好用 php,3分钟短文|PHP 定义常量,我该用define还是const?这下不迷茫了...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。