将值从调用PHP脚本传递给Called PHP脚本

时间:2014-04-21 19:25:29

标签: php

所以我有这个页面构建器类:

<?php
class PageBuilderService {
    public function getHeader() {
        // return file_get_contents('template/header.html');
        include 'template/header.php';
    }

    public function getFooter() {
        return file_get_contents('template/footer.html');
    }
}
?>

在PHP页面中,它被调用如下:

$page_builder = new PageBuilderService();

然后我想要的页面标题我打电话:

$page_builder->getHeader();

Etc等。

但我想添加一个脚本函数,该函数将引入一个scripts.php文件,该文件将运行传递给它的脚本文件名列表,以便在页面上显示<script>标记。

scipts php file:

<?php
    $page_builder = new PageBuilderService();

    echo $page_builder::createScriptTags($listOfScripts);
?>

显然这意味着扩展我的PageBuilderService类:

<?php
class PageBuilderService {
    public function getHeader() {
        // return file_get_contents('template/header.html');
        include 'template/header.php';
    }

    public function getFooter() {
        return file_get_contents('template/footer.html');
    }

    public function getScripts() {

            include 'template/scripts.php'; // Maybe here the list of scripts can be injected?
    }

    public static function createScriptTags($listOfScripts) {
        $scriptHtml = "";
        foreach ($listOfScripts as $script) {
            // some html building
        }

        return $scriptHtml;
    }
}
?>

从PHP页面获取$listOfScripts到脚本php文件的最佳方法是什么?

$_GLOBAL[]之类的东西会是最好的方法吗?

结果如下:

$page_builder->getScripts(); // and some way of getting a list of scripts to the script page

理想情况下,我想:

$scriptsToInclude = array("neededJsFile.js", "someOtherJs.js");
echo $page_builder->getScripts($scriptsToInclude);

但显然这取决于可能的情况。

2 个答案:

答案 0 :(得分:0)

怎么样:

class PageBuilderService {
    private $aScripts = array();        

    public function addScript($cScript) {
        $this->aScripts[$cScript] = true;
    }

    public static function createScriptTags() {
        $scriptHtml = "";
        foreach ($this->aScripts as $script) {
            // some html building
        }

        return $scriptHtml;
    }
}

这样你可以根据代码动态添加不同数量的脚本,但是当你调用createScriptTags时它们都会被注入...或者我是否错过了真正的问题?

答案 1 :(得分:0)

像@DragonYen所说,在脚本a中设置变量,然后调用脚本b并访问所述变量。所以我将创建一个包含

的脚本数组
$scriptsToInclude = array("script1.js", "script2.js");

然后调用脚本php

echo $page_builder->getScripts();

然后在脚本php中,检查$scriptsToInclude变量是否有脚本,如果有任何

则构建
if (!empty($scriptsToInclude) && count($scriptsToInclude) > 0) {
   PageBulderService::createScriptTags($scriptsToInclude);
}