我有一个小问题,我会尝试将其分解为一个小问题,以便我能够正确解释。
我正在开发一个Web应用程序,我有几个div,例如:
<div class="1">
//search bar
</div>
<div class="2">
include_once 'actioncontroller.php';
</div>
<div class="3">
</div>
在actioncontroller.php中我有一个动作控制器,它根据页面上按下的内容决定采取什么动作。我把它放在第二个div中,因为最终我想要打印所有内容。
我的问题是,有没有什么方法可以使用第一个div中的第二个div的代码,而不是在那里打印它?基本上我希望div中的搜索栏可以执行/打印与div 2中的搜索栏相同的内容,但我知道(认为)PHP无法看到include_once之上的代码,如果我包含actioncontroller.php它将在那里打印出来的第一个div,而不是像我想要的那样在第二个中打印它。
希望我足够清楚,这不是编码问题,这只是我如何在第一个div中读取脚本然后在第二个div中运行它的问题......
提前致谢
答案 0 :(得分:1)
我的问题是,有没有什么方法可以使用第一个div中的第二个div的代码,而不是在那里打印它?
是的,但最好的解决方案是更改您已编写的代码。从长远来看,最小化“程序性”PHP代码是至关重要的,这样只要include
/ require
文件就不会发生永远。
相信我,它适用于玩具项目,但它最终会导致精神错乱和痛苦。例如,不将其放在文件中:
<?php
echo("Header section");
这很糟糕,因为当打印时,无法选择关于。这是一个进步:
<?php
function WriteHeader(){
echo("Header section");
}
更好的方法是使用类自动加载,但这可能比你现在需要听到的更多。使用这种方法,您的主页看起来更像:
<?php
// This next line simply makes the class ActionController *available*,
// it does NOT cause new things to happen on its own
include_once("actioncontroller.php");
?>
<div class="1">
<?= ActionController::MakeSomeHTML(); ?>
</div>
<div class="2">
<?= ActionController::MakeSomeHTML(); ?>
</div>
<div class="3">
</div>
答案 1 :(得分:0)
此代码获取actioncontroller.php的输出并将其保存到变量中,该变量可多次echo
'。
<?php
ob_start();
include_once 'actioncontroller.php';
$output = ob_get_contents();
ob_end_clean();
?>
<div class="1">
<?php echo $output; ?>
</div>
<div class="2">
<?php echo $output; ?>
</div>