我在一个页面上有 2 个包含。假设它们是页眉和页脚:
<?php
include('header.php');
include('footer.php');
我需要在页眉的页脚中使用一个变量。这可能吗?
我在一个页面上有 2 个包含。假设它们是页眉和页脚:
<?php
include('header.php');
include('footer.php');
我需要在页眉的页脚中使用一个变量。这可能吗?
创建另一个包含或将 var 的逻辑放入主脚本中。
除非有理由不能这样做,否则简单的解决方案是将 inc2 中使用的变量设置在 inc1 中。
当脚本包含在任何函数之外时,脚本会在全局范围内执行,因此它设置或定义的任何范围内的内容都将具有全局范围。如果脚本包含在本地范围内(例如在函数中),则脚本在同一范围内执行,因此它定义的任何内容都是本地的。请注意,包含的脚本可以访问函数的本地变量。
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 原则)。