php是否在每个请求上重新定义常量?

问题描述 投票:2回答:2

[我看到有人在他们的index.php或配置文件中的代码中使用此语法

defined('SOME_CONSTANT') || define('SOME_CONSTANT','SOME_VALUE');

虽然我了解它的含义(如果定义,则保留原样,否则定义它),但是为什么要查看是否已定义,如果在脚本开始时未定义它,为什么呢?

AFAIK PHP将在每个单个请求上重新执行脚本,因此使用“ defined”有什么用?

php request
2个回答
0
投票

define()方法用于在应用程序中设置常量值。其中defined()用于检查给定常量是否存在并已定义。

如果不检查给定常量的存在,则在应用程序中未定义常量会出错。

注意:如果要查看变量是否存在,则将isset()用作define()仅适用于常量。如果要查看函数是否存在,请使用function_exists()。

参考:https://www.php.net/manual/en/function.defined.phphttps://www.php.net/manual/en/function.define.php


0
投票

考虑在可能包含或未包含的文件中定义的常量,或者可以直接访问或通过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';
© www.soinside.com 2019 - 2024. All rights reserved.