在本教程中,我们将向您展示如何在 PHP 中定义和使用常量。
在 PHP 中,常量是保存指定值的标识符。存储在常量中的值只能在运行时定义。
定义后,您无法更改存储在常量中的值。这对于您希望在整个 PHP 脚本中访问并且不希望或不需要更改其值的值很有帮助。
例如,您可以在 PHP 中使用常量来存储 SQL Server 的登录详细信息,以便在运行时访问。
有两种方法可以在 PHP 中定义常量。
- 第一种方法是利用
define()
函数。这些常量在运行时处理。 - 第二种方法是使用“
const
”关键字。使用它定义的常量是在运行代码之前的编译期间设置的。
我们将探索这些方法,并在本指南中解释它们之间的一些根本区别。
在 PHP 代码中命名常量时,应始终使用大写字母。此外,常量仍然遵循标准变量命名规则。
常量必须以字母或下划线开头,后跟字母、数字或下划线。但是,这将有助于避免编写以两个下划线开头和结尾的常量。PHP 的“魔术常量”通常使用这些。
在代码中引用常量时,不要$
在其名称前使用美元符号 ( )。因此,例如,您将使用“ FTP_DETAILS
”而不是“ $FTP_DETAILS
”。
最后,默认情况下,常量可以在整个脚本中自动访问,这意味着 PHP 可以在整个代码中访问它们。
使用 PHP 的 define() 函数定义常量
该define()
函数是将变量定义为 PHP 语言中的常量的两种方法之一。它不像“ const
”关键字那样易于阅读,但仍有一些优势。
当使用此函数定义常量时,它们直到运行时才会被处理。这意味着您可以使用PHP 的条件语句来指示是否定义了常量。
使用 define 函数的语法很简单,它只有两个你需要担心的参数。
define(NAME, VALUE)
第一个参数 ( NAME
) 用于设置常量名称。
请记住,在此处设置名称时,应使用大写字母。因此,例如,PHP 中常量的有效名称应该是“ FTP_DETAILS
”。
第二个 ( VALUE
) 参数用于设置要分配给常量的值。
使用 define() 在 PHP 中基本声明一个常量
define()
让我们向您展示使用该函数在 PHP 中声明一个常量是多么简单。
我们将WEBSITE
为此常量使用名称“”,并将值设置为包含“ pimylifeup.com
”的字符串。
您可以看到,当我们使用 define 函数时,我们将变量名传递给第一个参数,然后将我们想要设置的值传递给第二个参数。
然后我们利用PHP 的内置 echo 函数来输出我们设置常量的值。
<?php
define("WEBSITE", "pimylifeup.com");
echo WEBSITE;
?>
请记住,您必须避免$
在其名称前使用美元符号 ( ) 来使用常量。一个常量纯粹是用它的名字来引用的。因此,例如,您将使用“ CONSTANT
”,而不是“ $CONSTANT
”。
用 define() 声明的常量是全局的
使用该define()
函数声明的常量对当前 PHP 脚本全局可用。您甚至可以在函数和类中使用它。
为了展示这一点,让我们编写一个简单的脚本。该脚本将包含一个被调用的函数,该函数将在调用foo()
时输出我们的常量的值。
通过这个示例,您可以看到如何在函数中仍然使用常量。
<?php
define("WEBSITE", "pimylifeup.com");
function foo() {
echo WEBSITE;
}
foo();
?>
同样,如果我们要编写一个名为 Bar 的简单类,您可以看到仍然可以在其中使用 PHP 常量。
我们将使用与define()
前面示例相同的“ ”函数。这次我们将创建一个简单的类,叫做“ Bar
”。在这个类的构造方法中,我们将回显“ WEBSITE
”常量的值。
<?php
define("WEBSITE", "pimylifeup.com");
class Bar
{
public function __construct() {
echo WEBSITE;
}
}
new Bar();
?>
在不同的命名空间中声明 PHP 中的常量
在使用不同命名空间的 define 函数时声明一个常量并不是最清晰的代码。默认情况下,define 函数也将默认使用全局命名空间。
在特定命名空间中声明常量时,您需要将该命名空间作为其名称的一部分。
例如,如果您希望常量成为名为“ pimylifeup
”的名称空间的一部分,您可以使用“ pimylifeup\NAME
”。
下面的示例向您展示了如何在特定命名空间下使用 define 函数声明一个常量。
然后我们打印在当前命名空间下创建的常量。
<?php
namespace pimylifeup;
define("pimylifeup\WEBSITE", "pimylifeup.com");
echo namespace\WEBSITE;
?>
除非需要,否则应使用“ const
”关键字。它将自动在当前命名空间下声明。
在 PHP 中使用 Define() 函数有条件地声明常量
与“const”关键字相比,使用define() 函数来声明常量的主要优势在于处理它们的时间。
直到运行时才使用该define()
函数处理常量,这意味着可以有条件地设置它。
相反,使用“ const
”关键字定义的常量在编译时处理。这意味着它们是在任何代码运行之前定义的。
在下面的例子中,我们使用“ defined()
”函数来查看常量是否已经被定义。如果没有,我们声明它。
如果可以在代码的其他地方定义常量,则此代码段很有用。
<?php
if (!defined("WEBSITE")) {
define("WEBSITE", "pimylifeup.com");
}
echo WEBSITE;
?>
您可以将数组传递给 define() 函数
从 PHP 7 开始,可以在使用 define 函数时使用数组作为常量的值。
在 7.0 版本之前,每当您想将数组定义为常量时,都需要使用 const 关键字。
您需要做的就是将值设置为数组。我们将编写一个简单的示例,FOOD
用一个简单的数组声明“ ”常量。
您可以像在 PHP 中访问普通数组一样访问常量数组的元素。通过下面的示例,我们将打印出数组的第三个元素。
<?php
define("FOOD", [
'Apple',
'Carrot',
'Raspberry Pie'
];
echo FOOD[2];
?>
在 PHP 中使用 const 关键字定义一个常量
在 PHP 中声明常量的第二种方法是使用 const 关键字。这被认为比使用“ define()
”函数更具可读性,并且具有一些行为差异。
使用 const 关键字时,会在编译时设置一个常量,而不是在运行时设置。不幸的是,这意味着您不能在条件语句中使用 const 关键字。
与使用 define() 函数一样,您应该用大写字母或数字编写常量名称。
在 PHP 中使用 const 关键字定义常量的基本语法如下所示。
const NAME = value;
const 关键字声明常量的基本用法
对于本例,我们将使用 PHP 的 const 关键字声明一个新常量。我们将把这个常量命名为“ WEBSITE
”并为其赋值“ pimylifeup.com
”。
声明后,我们将使用 echo 函数将常量的值打印到屏幕上。
<?php
const WEBSITE = "pimylifeup.com";
echo WEBSITE;
?>
在 PHP 中使用 const 声明全局常量
您可以使用 const 关键字在 PHP 中全局声明常量。您需要做的就是确保它在命名空间或类之外声明。
通过下面的示例,您可以看到我们的“ WEBSITE
”常量仍然可以从“ bar()
”函数中访问。
当函数被调用时,它会打印出我们全局常量的值。
<?php
const WEBSITE = "pimylifeup.com";
function bar() {
echo WEBSITE;
}
bar();
?>
您可以使用 const 关键字在 PHP 类中声明常量
与 define 函数不同,您可以使用 const 关键字在类中声明常量。
除非您以不同方式指定它,否则该常量将是可公开访问的。
通过这个示例,我们将向您展示在 PHP 中声明和访问一个类中的常量的各种方法。
当你在类中声明你的常量时,你可以通过使用“ self::
”后跟常量名来访问它。
在类之外,您可以通过静态访问类(例如“ foo::
”)或通过创建输出常量值的函数来引用常量。
<?php
class foo
{
const WEBSITE = "pimylifeup.com";
function print_constant() {
echo self::WEBSITE;
}
}
echo foo::WEBSITE;
$foobar = new foo();
$foobar->print_constant();
?>
使用 const 关键字声明的常量采用当前命名空间
在 PHP 中使用 const 关键字声明的常量将采用当前设置的命名空间。
这比使用定义函数要干净得多,在定义函数中,您必须在其声明中包含命名空间。
下面的示例将向您展示使用 const 关键字在命名空间中声明常量是多么容易。然后我们打印声明的值。
<?php
namespace helloworld;
const WEBSITE = "pimylifeup.com";
echo namespace\WEBSITE;
?>
结论
在本指南中,我们向您展示了在 PHP 中声明常量的各种方法。
常量是一个变量,其值在其初始声明后不会也不能更改。PHP 的“ define()
”函数允许您声明在运行时创建的常量。
内置的 const 关键字允许您声明在编译时创建的常量。通过在定义函数上使用 this 有一个小的性能提升。
如果您对在 PHP 中处理常量有任何疑问,请在下方发表评论。
要了解有关 PHP 及其各种功能的更多信息,请查看我们的许多其他 PHP 指南。我们也有涵盖其他编程语言的教程。