将 PHP 变量从一个包含到另一个包含中


Using PHP variable from one include into another

>我在一个页面上有 2 个包含。假设它们是页眉和页脚:

<?php
include('header.php');
include('footer.php');

我需要使用页眉页脚中的变量。这可能吗?

创建另一个包含或将变量的逻辑放入主脚本中。

除非有原因不能,否则简单的解决方案是在 inc1 中设置 inc2 中使用的变量。

当脚本包含在任何函数之外时,脚本将在全局范围内执行,因此它设置或定义的任何作用域都将具有全局作用域。如果脚本包含在本地作用域(例如函数中)中,则该脚本将在同一作用域中执行,因此它定义的任何内容都是本地的。请注意,包含的脚本可以访问函数的本地变量。

function foo($x) {
    $bar = 'bam';
    include 'script.php'; # script.php can access $x and $bar
}

但是,全局变量可能会出现问题。更好的方法是将任务分解为单独的模块。大多数模块都是库脚本:它们只定义事物(函数、类),不直接执行任何内容。入口点(顶级脚本)不定义任何内容;相反,它用于连接一切并作为计算的起点。下面是一个包含数据库连接的简单示例:

<?php
include_once('DB.php');
include_once('header.php');
include_once('footer.php');
$db = DB::connect();
header($db);
footer($db);

虽然从技术上讲$db是一个全局变量(请注意,这只是示例代码,而不是生产代码),但不能在此脚本之外的任何地方访问它。相反,它是根据功能规则(这是为安全目的而设计的,但这些规则实际上只是很好的OOP原则)传递的。