0

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

索引.php

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

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

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

4

2 回答 2

6

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

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();
于 2012-06-20T20:08:15.893 回答
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 页面上也做同样的事情,

$about = new PageFromTemplate("myAboutTitle","About");`
于 2012-06-20T20:07:32.743 回答