[我看到有人在他们的index.php或配置文件中的代码中使用此语法
defined('SOME_CONSTANT') || define('SOME_CONSTANT','SOME_VALUE');
虽然我了解它的含义(如果定义,则保留原样,否则定义它),但是为什么要查看是否已定义,如果在脚本开始时未定义它,为什么呢?
AFAIK PHP将在每个单个请求上重新执行脚本,因此使用“ defined”有什么用?
define()方法用于在应用程序中设置常量值。其中defined()用于检查给定常量是否存在并已定义。
如果不检查给定常量的存在,则在应用程序中未定义常量会出错。
注意:如果要查看变量是否存在,则将isset()用作define()仅适用于常量。如果要查看函数是否存在,请使用function_exists()。
参考:https://www.php.net/manual/en/function.defined.php,https://www.php.net/manual/en/function.define.php
考虑在可能包含或未包含的文件中定义的常量,或者可以直接访问或通过include/require
访问的文件中定义的常量:
如果要访问https://example.com/index.php?page=test
,则定义常量,并包含test.php
:
// index.php
define('INDEX', true);
include($_GET['page'] . '.php'); // example only, don't do this!
在未定义常量的情况下,直接访问https://example.com/test.php
:
// test.php
defined('INDEX') || define('INDEX', false);
就像可能设置或未设置其他变量一样,例如在上面的示例中,当访问https://example.com/index.php
时:
isset($_GET['page']) || $_GET['page'] = 'default';
// or more likely
$page = $_GET['page'] ?: 'default';