PHP 常量


2021年8月23日, Learn eTutorial
2300

在本 PHP 教程中,您将学习 PHP 中的所有常量。我们将详细讨论什么是常量、常量数组、const 关键字、常量的命名约定、常量和变量的区别、魔术常量以及数学常量。

什么是 PHP 常量?

常量与变量非常相似,但常量的值不能被修改或取消定义。常量是存储简单值的名称或标识符,这些值不会改变。一旦在程序中定义,常量的值就不能被修改。常量默认是全局的,因此我们可以在整个脚本中需要它们的任何地方使用它们。与变量不同,常量不使用“$”作为前缀。常量可以通过两种方式定义:

  1. 通过使用 define() 函数
  2. 通过使用 const 关键字

语法


define(name, value, case-insensitive);  // using the define() function
const name = value;   // using the const keyword
 

如何使用 define() 函数定义常量?

我们使用 define() 函数在 PHP 中定义常量。通过使用 define() 函数,它在运行时定义一个常量。在 define() 函数中,我们传递参数“name”、“value”和“case-insensitive”。参数“case-insensitive”是可选的,默认情况下它将为 false,如果我们要将常量名称定义为不区分大小写,我们应该将参数传递为 true。按照约定,我们将常量标识符命名为大写,这样做是为了更容易识别常量和变量。像变量一样,我们只使用字母数字字符和下划线来命名常量,我们不使用特殊字符和空格。所有常量名称都以字母或下划线开头。


define(“WELCOME”, “Welcome to learnetutorials.com”);  
echo WELCOME;
 

输出


Welcome to learnetutorials.com

不区分大小写值为 true 的示例


define(“WELCOME”, “Welcome to learnetutorials.com”, true);  
echo welcome;
 

输出


Welcome to learnetutorials.com

如何使用 const 关键字定义常量?

define() 函数一样,我们也使用 const 关键字在 PHP 中定义常量。通过使用 const 关键字,它在编译时定义常量。const 关键字是一个语言结构,而不是像 define() 这样的函数。默认情况下,使用 const 关键字定义的常量是区分大小写的。按照约定,我们将常量标识符命名为大写,这样做是为了更容易识别常量和变量。像变量一样,我们只使用字母数字字符和下划线来命名常量,我们不使用特殊字符和空格。所有常量名称都以字母或下划线开头。


const WELCOME =  “Welcome to learnetutorials.com”;  
echo WELCOME;
 

输出


Welcome to learnetutorials.com

不区分大小写值为 true 的示例


const WELCOME =  “Welcome to learnetutorials.com”;  
echo welcome;
 

输出


error

PHP 中的常量数组是什么?

我们还可以在 PHP 中定义一个常量数组。要定义常量数组,我们使用 define() 函数。我们使用常量数组来定义在整个脚本中不应修改的数组。定义常量数组与定义常量类似。我们使用 define() 函数,参数为“name”、“array”和“case-insensitive”。

语法


define(name, array, case-insensitive);  
 

示例


define(“LANGUAGES”,[
   “PHP”,
   “Python”,
   “Java”
] );  
echo LANGUAGES[0];

 

输出


PHP

不区分大小写值为 true 的示例


define(“LANGUAGES”,[
   “PHP”,
   “Python”,
   “Java”
], true);  
echo languages[0];

 

输出


PHP

PHP 中 constant() 函数的用途是什么?

constant() 函数用于返回常量的值。当您想访问常量的值但不知道其名称时(例如,如果它存储在变量中或由函数返回),这很有用。

示例


define(“AGE”,50);  // define a constant with name AGE
$AGE = 18;    // define a variable with name AGE
echo $AGE;  // print the value of the variable
echo constant(“AGE”); // print the value of the constant
 

输出


18
50

PHP 常量的命名约定是什么?

  • 命名约定大多与变量命名约定相似。主要区别在于常量命名中不使用“$”符号。
  • 按照惯例,常量倾向于用大写字母命名。
  • PHP 中的常量名称只包含字母数字 (a-z, A-Z, 0-9) 字符和下划线 (_)。
  • 每个常量名称必须以字母 (a-z, A-Z) 或下划线 (_) 开头,换句话说,不能使用数字 (0-9) 或特殊字符。
  • 常量名称不应包含空格
  • 如果使用 define() 函数定义常量,可以将其设置为不区分大小写或区分大小写,否则,如果使用 const 关键字定义常量,则它始终是区分大小写的。

如何检查 PHP 常量是否在脚本中定义?

要检查常量是否在脚本中定义,我们使用 defined() 函数。在 defined() 函数中,我们传递常量名称作为参数,如果常量在脚本中定义,它将返回 1 (true),否则它将返回 0 (false)。

语法


define(name, array, case-insensitive);  
 

示例


define(“NAME”, “Jhon Doe”);
if(defined(NAME)){
    echo “The constant is defined”;
} else {
    echo “The constant is not defined”;
}
 

输出


The constant is defined

不区分大小写值为 true 的示例


define(“FULL_NAME”, “Jhon Doe”);
if(defined(NAME)){
    echo “The constant is defined”;
} else {
    echo “The constant is not defined”;
}

 

输出


The constant is not defined

如何将变量用作常量名称?

在程序中并不总是需要将常量名称复杂化到您想访问它的程度。例如,如果您可能有一个通用程序,您希望它在任意数量的不同常量上运行,而不仅仅是您输入的名称。解决此问题的最简单方法是将常量名称保存在变量中。为此,我们必须将常量名称分配给变量,然后当需要时,我们必须使用 constant() 函数并将变量名称作为参数。

示例


define(“FULL_NAME”, “Jhon Doe”);
$name = “FULL_NAME”;
echo constant($name);
 

输出


Jhon Doe

常量和变量之间有什么区别?

常量 变量
一旦定义了常量,它就不能被修改或取消定义 变量可以根据需要随时修改或取消定义
默认情况下,常量是全局的 变量可以是局部、静态或全局的
常量使用 define() 函数或 const 关键字定义 定义变量不需要任何东西,只需使用赋值运算符 (=) 赋值即可
常量可以从任何地方声明和检索,无论变量作用域规则如何 变量也可以在任何地方声明,但变量作用域规则是遵循的
常量不使用“$”符号 变量使用“$”符号作为前缀来表示变量

什么是 PHP 脚本和环境相关常量 / PHP 魔术常量?

魔术常量是 PHP 中预定义的常量,它们会根据其用途发生显著变化。它们以双下划线 (__) 开头,并以另一个双下划线结尾。它们与其他预定义常量非常相似,但由于它们的值会根据情况而变化,因此它们被称为魔术常量。

PHP 中有 9 个魔术常量
 

  1. __Line__

    它返回常量被调用的当前行号。

        <?php
            echo "Using  __LINE__ \n ";
            echo __LINE__;
        ?>
       
    

    输出

      
      Using  __LINE__
      3
      
  2. __FILE__

    它用于返回文件存储的路径。

        <?php
            echo "Using  __FILE__ \n ";
            echo __FILE__;
         ?>
      

    输出

      
      Using  __FILE__
      C:\ xampp\htdocs\php\magic_constant.php
    
      
  3. __DIR__

    它用于返回执行文件的目录路径。

        <?php
            echo "Using  __DIR__ \n ";
            echo __DIR__;
        ?>
      

    输出

      
      Using  __DIR__
      C:\ xampp\htdocs\php
    
      
  4. __FUNCTION__

    它用于返回使用 __FUNCTION__ 常量的函数的函数名称。

        <?php
           echo "Using  __FUNCTION__ \n";
           function a(){
               echo __FUNCTION__;
           }
           a();
       ?>
    

    输出

      
      Using  __FUNCTION__
      a
    
    
      
  5. __CLASS__

    它用于返回使用 __CLASS__ 常量的类的类名称。

        <?php
           echo "Using  __CLASS__ \n";
           class a{
               function ab(){
                   ;
               }
           }
           class b{
               function ab(){
                   echo __CLASS__;
               }
           }
        $a = new a;
        $a -> ab();
        $b = new b;
        $b -> ab();
    
       ?>

    输出

      
      Using  __CLASS__
      a
      
  6. __TRAIT__

    它用于返回使用 __TRAIT__ 常量的 trait 的 trait 名称。

       <?php   
           echo "Using __TRAIT__ \n";    
           trait ab {    
               function abc(){    
                   echo __TRAIT__;  
               }    
           }    
           class xyz {    
               use ab;    
               }    
           $a = new xyz;    
           $a->abc();    
       ?>  
      

    输出

      
      Using  __TRAIT__
      a
    
      
  7.  __METHOD__

    它用于返回使用 __METHOD__ 常量的类方法的类方法名称。

        <?php   
           echo "Using __METHOD__\n";  
           class a {    
               function b() {    
                       echo __METHOD__ . "\n";   
                   }    
               function c(){    
                       echo __METHOD__;   
               }    
           }    
           $a = new a;    
           $a->b();
           $a->c();
       ?> 

    输出

      
      Using __METHOD__
      a::b
      a::c
    
      
  8. __NAMESPACE__

    它将返回当前使用的命名空间。

      <?php   
           echo "Using __NAMESPACE__\n";  
           class a {    
               function __construct() {    
                   echo 'This will be printed on calling namespace.';     
               }     
           }    
           $ab = __NAMESPACE__ . '\a';    
           $a = new $ab;   
       ?> 

    输出

      
      Using __NAMESPACE__
            This will be printed on calling namespace.
    
      
  9. ClassName::class

    与其他魔术常量不同,它不以双下划线 (__) 开头和结尾。它用于返回 ClassName 的完全限定名称。PHP 5.5.0 引入了 ClassName::class 常量。它在处理命名空间类时很有用。

     <?php   
           namespace abc;  
           echo "Using ClassName::class \n";  
           class xyz {    
           }  
           echo xyz::class;    //ClassName::class   
       ?>

    输出

      
      Using ClassName::class 
      abc\xyz
      

PHP 中有哪些数学常量?

常量 描述
INF INF 它用于返回无穷大
M_E 2.7182818284590452354 它用于返回 e
M_EULER 0.57721566490153286061 它用于返回欧拉常数
M_LNPI 1.14472988584940017414 它用于返回 PI 的自然对数:log_e(pi)
M_LN2 0.69314718055994530942 它用于返回 2 的自然对数:log_e 2
M_LN10 2.30258509299404568402 它用于返回 10 的自然对数:log_e 10
M_LOG2E 1.4426950408889634074 它用于返回 E 的以 2 为底的对数:log_2 e
M_LOG10E 0.43429448190325182765 它用于返回 E 的以 10 为底的对数:log_10 e
M_PI 3.14159265358979323846 它用于返回 Pi 的值
M_PI_2 1.57079632679489661923 它用于返回 Pi/2 的值
M_PI_4 0.78539816339744830962 它用于返回 Pi/4 的值
M_1_PI 0.31830988618379067154 它用于返回 1/Pi 的值
M_2_PI           0.63661977236758134308 它用于返回 2/Pi 的值
M_SQRTPI 1.77245385090551602729 它用于返回 PI 的平方根:sqrt(pi)
M_2_SQRTPI 1.12837916709551257390 它用于返回 2/PI 的平方根:2/sqrt(pi)
M_SQRT1_2 0.70710678118654752440 它用于返回 1/2 的平方根:1/sqrt(2)
M_SQRT2 1.41421356237309504880 它用于返回 2 的平方根:sqrt(2)
M_SQRT3 1.73205080756887729352 它用于返回 3 的平方根:sqrt(3)
NAN NAN 它用于返回“非数字”
PHP_ROUND_HALF_UP 1 它用于返回四舍五入
PHP_ROUND_HALF_DOWN 2 它用于返回向下舍入
PHP_ROUND_HALF_EVEN 3 它用于返回偶数四舍五入
PHP_ROUND_HALF_ODD 4 它用于返回奇数四舍五入