我做了一个基本的PHP模板系统,由controllers/pages.php和views/pages.php。该意见使用控制器来填充数据的HTML应该从控制器现身,但有些数据没有被从控制器传递给意见标志着我下面的代码注释为这样的“ #==> NOT WORKING“有这样的评论的任何东西不会返回任何数据到意见任何建议可能是为什么?PHP模板函数不返回数据
<?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');
查看/ 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>
'return this' - 你的意思是'return $ this'? –
@MCEmperor Ahe在这之前没有发现我错过了$,实际上我修复它返回$这仍然没有数据返回setAppName,setCopyright,listCSS和listJS – 10010010001011101111
你是如何测试变量的(内容)?使用'var_dump()'? –