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() {
16 $this->template = file(self::$template_dir."/template.html");
17 $this->head = file(self::$template_dir."/head.html");
18 $this->header = file(self::$template_dir."/header.html");
19 $this->footer = file(self::$template_dir."/footer.html");
21 $this->main_contents_fp = fopen('php://temp', 'r+');
25 * Webページのメインコンテンツを書き込むリソースのポインタを得る
27 * @return resource Webページのメインコンテンツを書き込むリソースのポインタ
29 public function main_contents_fp()
31 return $this->main_contents_fp;
36 * Webページのhead内のtilteタグの内容をセットする
38 * @param string title セットするタイトルの文字列
40 public function set_title($title)
42 foreach ($this->head as &$line) {
43 $line = preg_replace('/<title>.*<\/title>/', "<title>{$title}</title>", $line);
49 * Webページのhead内にコンテンツを追加する
50 * javasciprtやCSSを読み込ませるタグの追加に使用
52 * @param string contents 追加するコンテンツの文字列
54 public function add_head_contents($contents)
56 $end_line = array_pop($this->head);
57 array_push($this->head, $contents."\n", $end_line);
64 public function print_page() {
65 rewind($this->main_contents_fp);
66 $this->main_contents = [stream_get_contents($this->main_contents_fp)];
67 foreach ($this->template as $line) {
69 switch (trim($line)) {
71 self::print_page_sub($this->head);
74 self::print_page_sub($this->header);
76 case "<!--main contents-->":
77 self::print_page_sub($this->main_contents);
80 self::print_page_sub($this->footer);
86 private static function print_page_sub($lines) {
87 foreach ($lines as $line){