将PHP变量注入HTML代码

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了将PHP变量注入HTML代码脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
之前可能已经提出过这个问题,但我找不到一些初步搜索问题的答案,所以这里是:

我将PHP变量注入HTML的当前方法一个非常简单的示例如下:

HTML(file.PHP):

<tag><?PHP echo $variable; ?></tag>

PHP

$variable = "value";

ob_start();
include "file.PHP";
$results = ob_get_clean();

这样就可以很好地实现正确的结果,但每次我必须复制并粘贴这三行以将变量注入我的HTML文件时,它会让我很烦.我可能希望在以后更改此注入功能的详细信息,并且它目前分散在我的代码中的几百个位置.

一个完美的世界中,我会将这三行移动到一个单独的函数中,该函数文件路径作为输入,并返回“已编译”的结果.但是,该函数将不再具有对调用范围的访问权限,并且我必须将变量作为另一个输入传递.我唯一能想到的就是:

function injectVariables($filePath,array $variables)
{
    //Built-in PHP function,extracts array key => value pairs into variable $key = value pairs in the current scope
    extract($variables);

    ob_start();
    include $filePath;
    return ob_get_clean();
}

这当然可以完成工作,如果没有更好的解决方案,它将是我实施的,但对我来说似乎不太理想.它涉及每次运行时创建一个数组,只是为了遍历它并提取所有变量,这对我来说感觉有点不对.

有谁知道可能有用的任何其他方法

解决方法

不确定你在问什么,但这是我的答案

我不知道您的代码的结构,但我希望您使用的是MVC方法(或者至少是处理类的方法),以便您可以执行以下操作:

在主控制器中,创建一个类变量,如viewData,它将是一个数组.你把所有你想要的东西放进去

$this->viewData['username'] = $username;
$this->viewData['myArray'] = array('foo' => 'bar');
$this->viewData['menuSubview'] = 'path_to_menu_subview.PHP';

然后,您创建一个渲染功能.

public function render()
{
    extract($this->viewData);
    ob_start();
    include("myfile.PHP");
    return ob_get_clean();
}

在myfile.PHP(使用HTML)中,您可以简单地执行到目前为止使用的内容

<div id="menu"><?PHP include($menuSubview);?></div>
<p><?=$username;?></p>
<p><?=$myArray['foo'];?></p>

整个代码可以是这样的.

class Something {

    protected $viewData;
    protected $viewFile;

    public function logic()
    {
        $this->userProfile();
        echo $this->render();
    }

    public function userProfile()
    {
        $this->viewData['username'] = 'John The Ripper';
        $this->viewFile = 'myFile.PHP';
    }

    public function render()
    {
        extract($this->viewData);
        ob_start();
        include($this->viewFile);
        return ob_get_clean();
    }
}

脚本宝典总结

以上是脚本宝典为你收集整理的将PHP变量注入HTML代码全部内容,希望文章能够帮你解决将PHP变量注入HTML代码所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: