首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP define() 常數定義完整教學與實務範例

     編輯:PHP 相關知識

語法

define(string $name, mixed $value, bool $case_insensitive = false): bool
  • `$name`:常數名稱,慣例全大寫(如 `APP_VERSION`)。
  • `$value`:常數值,僅限純量或陣列(PHP 7+ 支援陣列)。
  • `$case_insensitive`:true 為大小寫不敏感(不建議,預設 false)。

基本範例

<?php
define('PI', 3.1415926);
define('APP_NAME', 'MyApp', true); // 大小寫不敏感

echo PI;        // 3.1415926
echo app_name;  // MyApp(不區分大小寫)
echo APP_NAME;  // MyApp

// 常數不可變更,重複定義會發出 Notice 並忽略
define('PI', 3.0); // Notice: Constant PI already defined
?>

預先定義的魔術常數

常數說明
__LINE__目前行號
__FILE__完整檔案路徑(含檔名)
__DIR__檔案所在目錄(PHP 5.3+)
__FUNCTION__函數名稱
__CLASS__類別名稱
__TRAIT__Trait 名稱
__METHOD__方法名稱
__NAMESPACE__命名空間名稱

實務應用:環境設定

<?php
// config.php
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'myapp');
define('DB_USER', 'dbuser');
define('DB_PASS', 'secret');
define('DEBUG_MODE', true);

// 使用
$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME;
$pdo = new PDO($dsn, DB_USER, DB_PASS, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

if (DEBUG_MODE) {
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
}
?>

陣列常數

<?php
define('ALLOWED_EXTS', ['jpg', 'jpeg', 'png', 'gif', 'webp']);
define('ROUTE_MAP', [
    'home' => 'HomeController@index',
    'login' => 'AuthController@login'
]);

// 存取
echo ALLOWED_EXTS[0]; // jpg
echo ROUTE_MAP['login']; // AuthController@login
?>

const vs define

  • const:編譯期定義,僅限類別內或最上層命名空間,不可在條件判斷中動態定義,語法更簡潔,效能略優。
  • define():執行期定義,可動態決定名稱與值,支援大小寫不敏感(不建議使用)。
<?php
const API_VERSION = 'v1'; // 推薦用於類別常數或全域常數
define('API_VERSION_2', 'v2'); // 需動態時使用
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved