簡體   English   中英

在PHP中定義全局常量的最佳方法是什么?

[英]What is the best way to define a global constant in PHP which is available in all files?

定義全局常量的最佳方法是什么,即在所有PHP文件中都可用?

更新:常量和類常量之間有什么區別? 它們可以互換使用嗎?

頂級 .php文件中定義常量,該常量將包含在所有其他腳本中。 它可能是您的前端控制器,配置文件或為此單一目的而創建的文件。

!defined('MY_CONST') && define('MY_CONST', 'hello');

請執行下列操作:

define("CONSTANT_NAME","value");

如果你想從其他php文件訪問這個常量,你必須包含它:

include_once("thefilewiththeconstant.php");

檢查一下

<?php
//Global scope variables
$a = 1;
$b = 2;

 function Sum()
 {
global $a, $b;

$b = $a + $b;
 } 

Sum();
echo $b;
?>

當你想在PHP文件中使用全局常量時,我​​覺得一個好的做法是使用面向對象的原則並在相關的類中定義它們。 使用PHP內置的spl_autoload_register()函數,您可以定義所有后續類以擴展相關的“全局類”,而無需擔心在任何地方手動包含文件。 該全局類的所有后續子類始終可以訪問相關的全局變量。 (我說相關是因為將類中的全局常量以某種方式相關聯而不是所有組合在一起而沒有押韻或理由的設計是好的設計)

無論您在哪個文件中創建常量,都必須在要使用它們的文件中要求/包含它。

否則,您可以使用$ _SESSION全局,但這需要在每個文件的代碼開頭的session_start()進行會話初始化。

更好的方法是檢查常量是否分配給任何東西,如果它沒有分配給任何東西然后分配它,否則將它分配給NULL然后將它分配給你的常量

defined("FOO") ? null : define("FOO", "BAR");

這取決於。 在你的情況下,我會選擇define()因為它在使用中具有更緊湊的語法。 但是define()只能在PHP <7.0中保存標量值。如果你需要一個關聯數組,你沒有其他選擇,那么去$GLOBALS或使用PHP> = 7.0。

// Storing a single value works fine with define
define( 'ROOT_DIR', dirname(dirname(__FILE__)) . '/' );

// But not for complex data types like this array
$USERPIC_PARAMS = array(
            "user_root"       => "images/users",
            "padding_length"    => 8,
            "split_length"      => 4,
            "hash_length"         => 12,
            "hide_leftover"     => false
    );

// Then you need $GLOBALS
$GLOBALS['USERPIC_PARAMS']  = $USERPIC_PARAMS;
// Or in PHP >=7.0
define( 'USERPIC_PARAMS', $USERPIC_PARAMS );

// output your define
echo ROOT_DIR;
// output your $GLOBALS var
echo $GLOBALS['USERPIC_PARAMS'];
// output in PHP >=7.0 your constant
echo USERPIC_PARAMS;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM