使用对象创建 PHP 模板

use*_*027 0 php oop templates

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

索引.php

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

    <html>
      <body>
         <h1><?php echo $object1->variable ?></h1>
      </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

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

lin*_*ogl 6

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

class MyClass {
  //
  // add whatever properties you like here
  //
  public function Render(){ 
    include ( 'mytemplate.php' );
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,在文件中,mytemplate.php您可以通过简单地使用$this->whatever.

这种模式很容易被不同的对象重用:

$x = new MyClass;
$x->Render();

$y = new MyClass;
$y->Render();
Run Code Online (Sandbox Code Playgroud)