0

オブジェクト指向コードを含む php テンプレートを作成しようとしています。これは、私がやろうとしていることの簡単な例です。

index.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

このような変数にアクセスしますか?
Home と About の 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 に答える