创建带有对象的 PHP 模板


Creating a PHP Template with Objects

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

索引.php

<?php  require 'requiredfile.php'; ?>
    <html>
      <body>
         <h1><?php echo $object1->variable ?></h1>
      </body>
    </html>

但是,如果我想对多个对象使用相同的模板怎么办?我绝对不想为对象 1、2 和 3 创建不同版本的索引.php。 我假设我可以做一些类似 $this->variable 的事情并传入对象,但我不完全确定如何做到这一点,因为它在该类的声明之外。

有一个很好的技巧可以做你想做的事。反转逻辑并让类调用模板:

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();

你想访问这样的变量吗?
假设您有 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");`