Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从包含的PHP文件传递数据的策略_Php_Oop - Fatal编程技术网

从包含的PHP文件传递数据的策略

从包含的PHP文件传递数据的策略,php,oop,Php,Oop,下面的代码展示了我当前通过index.php呈现页面的方式。问题是,我不知道如何重新思考这个问题,以便在包含模板之前传递页面标题 我还有别的办法吗?这只是我的索引页,请询问是否需要更多代码 include($cms->GetTheme()。“/head.php”)这应该在被包含之前获得标题信息,但我不确定如何从后面包含的页面传递数据 include('config/config.inc.php'); $cms = new cms(); if(($_SERVER['REQUEST_METHOD

下面的代码展示了我当前通过
index.php
呈现页面的方式。问题是,我不知道如何重新思考这个问题,以便在包含模板之前传递页面标题

我还有别的办法吗?这只是我的索引页,请询问是否需要更多代码

include($cms->GetTheme()。“/head.php”)这应该在被包含之前获得标题信息,但我不确定如何从后面包含的页面传递数据

include('config/config.inc.php');

$cms = new cms();

if(($_SERVER['REQUEST_METHOD'] === 'GET' || $_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_GET['page'])) {
    include($cms->GetTheme() . "/head.php");
    $cms->IncludeModule($_GET['page']); <- actual page being included
    include($cms->GetTheme() . "/foot.php");
} // end (GET || POST) && GET
else { // just index.php
    include($cms->GetTheme() . "/head.php");
    foreach($cms->GetModuleList() as $module) {
        echo " <a href=\"index.php?page=$module\"> $module </a><br />";
    }
    include($cms->GetTheme() . "/foot.php");
} // end ELSE

到处都是回声。通过存储输出,而不是直接打印输出,尝试限制您这样做的位置

例如,在您的模块中,您可以执行
$this->content=“您已注销…”

然后您可以更改执行顺序:

$cms->IncludeModule($_GET['page']);
include($cms->GetTheme() . "/head.php");
echo $cms->content;    
include($cms->GetTheme() . "/foot.php");

如果没有令人讨厌的输出缓冲攻击,你就不能。通常的做法是将逻辑和表示分离,因此在向浏览器输出任何数据之前,都会定义所有数据。我认为这是一个好主意。也将节省一些编码在未来。
$cms->IncludeModule($_GET['page']);
include($cms->GetTheme() . "/head.php");
echo $cms->content;    
include($cms->GetTheme() . "/foot.php");