我正在尝试创建一个包含面向对象代码的php模板。这是我想要做的简化示例。
的index.php
<?php require 'requiredfile.php'; ?>
<html>
<body>
<h1><?php echo $object1->variable ?></h1>
</body>
</html>
但是如果我想为多个对象使用相同的模板呢?我绝对不希望为对象1,2和3创建不同版本的index.php。我假设我可以做$this->variable
之类的事情并传入对象,但我并不完全确定如何做到这一点,因为它超出了该类的声明。
答案 0 :(得分:4)
有一个很好的技巧可以做你想要的。反转逻辑并让类调用模板:
class MyClass {
//
// add whatever properties you like here
//
public function Render(){
include ( 'mytemplate.php' );
}
}
现在,在文件mytemplate.php
中,您只需使用$this->whatever
即可调用该类的任何属性或方法。
此模式可以使用不同的对象轻松重复使用:
$x = new MyClass;
$x->Render();
$y = new MyClass;
$y->Render();
答案 1 :(得分:0)
您想要访问这样的变量吗?
说你有2页主页和关于
//requiredfile.php
Class PageFromTemplate{
function __construct($title,$type){
$this->type = $type;
$this->_setTitle($title);
}
private function _setTitle($title){
$this->title = $title;
}
}.
//index.php
<?php require 'requiredfile.php';
$home = new PageFromTemplate("myHomeTitle","Home");
?>
<html>
<body>
<h1><?php echo "this page is of type : " . $home->type; ?></h1>
</body>
</html>
在页面上也这样做,
$about = new PageFromTemplate("myAboutTitle","About");`