所以我有这个页面构建器类:
<?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);
但显然这取决于可能的情况。
答案 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);
}