私はcontrollers/pages.phpとviews/pages.phpで作られた基本的なPHPテンプレートシステムを作りました。ビューはコントローラーを使用して、コントローラーから送信されるはずのデータをHTMLに入力しますが、一部のデータがコントローラーからビューに渡されていません。以下のコードに「#==>NOTWORKING」などのコメントを付けました。コメントは、おそらく理由についての提案を表示するためのデータを返しませんか?
<?php
# THIS IS CONTROLLERS/PAGES.PHP
class Page {
private $title, $stylesheets=array(), $javascripts=array(), $body;
# ==> NOT WORKING
function Site() {
$site = "http://dev.site.tld/";
return $site;
}
function Page() {
$this->addCSS('css/main.css');
$this->addCSS('css/font-awesome.css');
$this->addJavascript('js/jquery.js');
$this->addJavascript('js/application-build102121.js');
}
function setTitle($title) {
$this->title = $title;
}
# ==> NOT WORKING
function setCopyright() {
$copyright_year = date("Y");
return $copyright_year;
}
# ==> NOT WORKING
function setAppName() {
$app_name = "Latte";
return $app_name;
}
function addCSS($path) {
$this->stylesheets[] = $path;
}
# ==> NOT WORKING
function listCSS($path) {
$data = Site();
foreach ($this->stylesheets as $stylesheet) {
echo '<link href="' . $data . $stylesheet . '" rel="stylesheet" type="text/css" />' . "\n";
}
return $this;
}
# ==> NOT WORKING
function listJS($path) {
$data = Site();
foreach ($this->javascripts as $javascript) {
echo '<script src="' . $data . $javascript . '" type="text/javascript" defer="defer"></script>' . "\n";
}
return $this;
}
function addJavascript($path) {
$this->javascripts[] = $path;
}
function startBody() {
ob_start();
}
function endBody() {
$this->body = ob_get_clean();
}
function render($path) {
ob_start();
include($path);
return ob_get_clean();
}
}
Error_Reportingは
Notice: Undefined property: Page::$listCSS in /home/adminis1/public_html/dev/views/pages.php on line 15
Notice: Undefined property: Page::$listJS in /home/adminis1/public_html/dev/views/pages.php on line 17
Notice: Undefined property: Page::$setCopyright in /home/adminis1/public_html/dev/views/pages.php on line 25
データがIndex.phpと呼ばれる方法
<?php
require_once('controllers/pages.php');
$page = new Page;
$page->setTitle('Home');
$page->startBody();
?>
<img src="test-img.jpg" />
<?php
$page->endBody();
echo $page->render('views/pages.php');
VIEWS / PAGES.PHP
<?php error_reporting(E_ALL); ?>
<html lang="en">
<head>
<meta charset="utf-8">
<title><?php echo $this-setAppName; ?> - <?php echo $this->title; ?></title>
<!-- view port meta -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<?php echo $this->listCSS; ?>
<?php echo $this->listJS; ?>
</head>
<body>
<?php echo $this->body; ?>
<footer>
<p>Copyright © <?php echo $this->setCopyright; ?> </p>
</footer>
</body>
</html>