我在页面上有2个包含。让我们说它们是页眉和页脚:
<?php
include('header.php');
include('footer.php');
我需要在标题中使用页脚中的变量。这可能吗?
答案 0 :(得分:3)
创建另一个include或将var的逻辑放入主脚本中。
答案 1 :(得分:1)
除非有理由不能,否则简单的解决办法就是在inc1中设置inc2中使用的变量。
当脚本包含在任何函数之外时,脚本在全局范围内执行,因此它设置或定义的任何范围都将具有全局范围。如果脚本包含在本地范围内(例如在函数中),则脚本在同一范围内执行,因此它定义的任何内容都是本地的。请注意,包含的脚本可以访问函数的本地变量。
function foo($x) {
$bar = 'bam';
include 'script.php'; # script.php can access $x and $bar
}
然而,global variables可能会有问题。更好的方法是将任务分解为单独的模块。大多数模块都是库脚本:它们只定义事物(函数,类)并且不直接执行任何操作。入口点(顶级脚本)没有定义任何内容;相反,它用于连接所有内容并作为计算的起点。这是一个使用数据库连接的简单示例:
<?php
include_once('DB.php');
include_once('header.php');
include_once('footer.php');
$db = DB::connect();
header($db);
footer($db);
虽然技术上$db
是一个全局变量(请注意,这只是示例代码,而不是生产代码),但不能在此脚本之外的任何地方访问它。相反,它是根据capabilities的规则传递的(这是为安全目的而设计的,但规则实际上只是好的OOP原则)。