我試圖重構一些代碼,並且存在使用全局變量的模板。 require
和include
裏面的一個函數只使用局部範圍,那麼有沒有辦法可以「需要全局」?PHP需要使用全局變量的模板
現在,我們在所有路由器文件中都有相當多的代碼行重複,像這樣。此問題涉及的陳述如下:
require 'header.php';
require $template;
require 'footer.php';
這些聲明位於全局範圍內。我試圖重構這些進入的方法是這樣一個類中:
class Foo {
/**
* Template file path
* @var string
*/
protected $template;
public function outputHTMLTemplate() {
header("Content-Type: text/html; charset=utf-8");
require 'header.php';
if (file_exists($this->template)) {
require $this->template;
}
require 'footer.php';
}
}
假設我有template.php
,在模板中有超全局變量和全局變量是這樣的:
<h1>Hello <?= $_SESSION['username']; ?></h1>
<ul>
<?php
foreach ($globalVariable1 as $item) {
echo "<li>$item</li>";
}
?>
</ul>
這是一個簡單的例子,在實際的模板中可能有很多全局變量。
我應該如何將輸出代碼移到一個方法?
這是不可行的全局變量的數量可以在運行時會有所不同。將使用'$ GLOBALS'工作(即'公共函數__construct(){$ this-> data = $ GLOBALS;}')? –
這不是很安全,但是,看@ Christian的答案。 – AbraCadaver