使用对象创建PHP模板

时间:2012-06-20 19:54:43

标签: php oop templates

我正在尝试创建一个包含面向对象代码的php模板。这是我想要做的简化示例。

的index.php

<?php  require 'requiredfile.php'; ?>

    <html>
      <body>
         <h1><?php echo $object1->variable ?></h1>
      </body>
    </html>

但是如果我想为多个对象使用相同的模板呢?我绝对不希望为对象1,2和3创建不同版本的index.php。我假设我可以做$this->variable之类的事情并传入对象,但我并不完全确定如何做到这一点,因为它超出了该类的声明。

2 个答案:

答案 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");`