6 * 2. 必要ならばset_title()でタイトル設定
7 * 3. 必要ならばadd_head_contentsでheadタグの内容を追加
8 * 4. main_contents_fp()で得たリソースにコンテンツを書き込み
9 * 5. print_page()でWebページ出力
13 private static $template_dir = "../template";
15 public function __construct()
17 $this->template = file(self::$template_dir."/template.html");
18 $this->head = file(self::$template_dir."/head.html");
19 $this->header = file(self::$template_dir."/header.html");
20 $this->footer = file(self::$template_dir."/footer.html");
22 $this->main_contents_fp = fopen('php://temp', 'r+');
26 * Webページのメインコンテンツを書き込むリソースのポインタを得る
28 * @return resource Webページのメインコンテンツを書き込むリソースのポインタ
30 public function main_contents_fp()
32 return $this->main_contents_fp;
37 * Webページのhead内のtilteタグの内容をセットする
39 * @param string title セットするタイトルの文字列
41 public function set_title($title)
43 foreach ($this->head as &$line) {
44 $line = preg_replace('/<title>.*<\/title>/', "<title>{$title}</title>", $line);
50 * Webページのhead内にコンテンツを追加する
51 * javasciprtやCSSを読み込ませるタグの追加に使用
53 * @param string contents 追加するコンテンツの文字列
55 public function add_head_contents($contents)
57 $end_line = array_pop($this->head);
58 array_push($this->head, $contents."\n", $end_line);
65 public function print_page()
67 rewind($this->main_contents_fp);
68 $this->main_contents = [stream_get_contents($this->main_contents_fp)];
69 foreach ($this->template as $line) {
71 switch (trim($line)) {
73 self::print_page_sub($this->head);
76 self::print_page_sub($this->header);
78 case "<!--main contents-->":
79 self::print_page_sub($this->main_contents);
82 self::print_page_sub($this->footer);
88 private static function print_page_sub($lines)
90 foreach ($lines as $line) {