PHP 常量
PHP 常量
Section titled “PHP 常量”常量(Constants)是标识符,用于存储在脚本执行期间不会改变的值。一旦定义,其值就保持固定。
理解 PHP 常量
Section titled “理解 PHP 常量”常量是简单值的名称(标识符)。与变量不同,赋值给常量的值在定义后不能更改。
有效的常量名以字母或下划线开头,后跟任意数量的字母、数字或下划线。按照惯例,常量名通常用大写字母书写。重要的是,常量名不像变量那样以美元符号 ($) 开头。
注意:默认情况下,常量具有全局作用域(global scope),这意味着它们可以在脚本中的任何位置访问,而无需使用 global 关键字。
创建 PHP 常量
Section titled “创建 PHP 常量”在 PHP 中有两种主要的定义常量的方式:
- 使用
define()函数:这是传统方法,允许有条件地或在运行时根据名称定义常量。 - 使用
const关键字:这是后来引入的方法,通常推荐用于在脚本的顶层或类中定义常量,因为它对于编译时常量来说稍快且更清晰。
使用 define()
Section titled “使用 define()”define() 函数创建一个命名常量。
语法:
define(string $name, mixed $value)
参数:
- name: 常量的名称(默认区分大小写)。
- value: 常量的值。可以是标量值 (scalar values)(int, float, string, bool, null)或数组 (arrays)(PHP 7+ 支持)。
注意:第三个参数 case-insensitive 在旧版本的 PHP 中可用,但在 PHP 7.3 中已弃用,并在 PHP 8.0 中移除。现在常量总是区分大小写。
使用 define() 的示例:
<?php
define("GREETING", "Welcome to Modern PHP!");echo GREETING; // 输出:Welcome to Modern PHP!
// 定义一个数组常量 (PHP 7+)define('ALLOWED_LANGUAGES', ['en', 'es', 'fr']);print_r(ALLOWED_LANGUAGES);
?>使用 const
Section titled “使用 const”const 关键字提供了更简单的语法来定义常量,尤其是在全局作用域或类内部。
语法(全局作用域):
const CONSTANT_NAME = value;
使用 const 的示例:
<?php
const APP_VERSION = '2.1.0';echo APP_VERSION; // 输出:2.1.0
const DEFAULT_SETTINGS = [ 'theme' => 'dark', 'notifications' => true];
echo DEFAULT_SETTINGS['theme']; // 输出:dark
?>使用 const 定义的常量必须在顶层作用域 (top-level scope) 或类内部声明;它们不能像 define() 那样在函数或控制结构内部定义。
常量是全局的
Section titled “常量是全局的”常量自动具有全局性 (global),可以在整个脚本中访问,无论它们在何处定义。
显示全局作用域的示例:
<?php
const SITE_NAME = "My Awesome Website";
function displaySiteName() { // SITE_NAME 在函数内部是可访问的 echo "Welcome to " . SITE_NAME;}
displaySiteName(); // 输出:Welcome to My Awesome Website
?>魔术常量 (Magic Constants)
Section titled “魔术常量 (Magic Constants)”PHP 提供了一些预定义的“魔术”常量,它们的值会根据它们被使用的位置而变化。这些常量对于调试和获取脚本的元信息非常有用。
__LINE__:文件中的当前行号。__FILE__:文件的完整路径和文件名。__DIR__:文件所在的目录。__FUNCTION__:函数名。__CLASS__:类名。__TRAIT__:Trait 名称。__METHOD__:类方法名。__NAMESPACE__:当前命名空间的名称。ClassName::class:完整的类名(PHP 5.5 引入)。
使用 __DIR__ 的示例:
<?php
// 假设这段代码位于 /var/www/myapp/config/app.phpecho "Configuration directory: " . __DIR__;// 输出:Configuration directory: /var/www/myapp/config
?>进一步阅读:
Section titled “进一步阅读:”有关更多详情,请参考官方 PHP 常量文档: