Php 包括文件和抑制副作用

Php 包括文件和抑制副作用,php,scope,Php,Scope,假设我有两个php脚本script.php和inc.php。(设置常数: defined('PASSWORD') or define('PASSWORD', 'value'); 常数是全局的,但不能定义2次。 如果在“db.php”中定义密码常量,则无法在“script.php”中的密码中重新定义.为什么不可以?密码应该在配置文件中,而不是在源代码中。DSN字符串和用户名也是如此。您很可能缺少基本概念。如果您构建此场景,请从头开始创建一个新示例,尽可能少的代码来显示您的问题(例如,我可以想象这

假设我有两个php脚本
script.php
inc.php
。(
设置常数:

defined('PASSWORD') or define('PASSWORD', 'value');
常数是全局的,但不能定义2次。
如果在“db.php”中定义密码常量,则无法在“script.php”中的密码中重新定义.

为什么不可以?密码应该在配置文件中,而不是在源代码中。DSN字符串和用户名也是如此。您很可能缺少基本概念。如果您构建此场景,请从头开始创建一个新示例,尽可能少的代码来显示您的问题(例如,我可以想象这不需要两个文件,一个10行的脚本(如果是偶数)就足以说明你的观点。@hakre我修改了这个示例以关注手头的问题。@Samuel:为什么要有多个文件?对于最小的示例来说,这不需要。请将其转换为一个更清晰、更易于复制的示例@Samuel:你可能在寻找这样一个函数:我修改了这个例子,以便更加关注这个问题。我特别感兴趣的是使用变量的情况,以及使文件安全或安全地包含它的情况。
$foo = 'b'; // $foo is b
include 'inc.php'; // $foo is a
// $foo is b
{
    $foo = 'a'; // $foo is a
} // $foo is b
// $foo is b
call_user_func(function() {
    $foo = 'a'; // $foo is a
}); // $foo is b
defined('PASSWORD') or define('PASSWORD', 'value');