忍者ブログ

雑記

【PHP】クラスの継承例

雑記 > codeのメモ > 【PHP】クラスの継承例

phpの継承の利用の試作

phpで継承を使ってみた例。

親クラスではbody内で実行する処理を、do_body_pre、do_body_main、do_body_postに分け、継承先でdo_body_mainだけを修正してページファイルを量産する例。

継承元(親)クラス(file=tmp.php)

<?php
class tmp {

  protected function do_body_pre() {
    echo '<div id="wrapper">';
    include __DIR__ . '\includes\sidebar.html' ;
    echo '<div id="page-content-wrapper" class="container-fluid">' ;
  }

  protected function do_body_main() {}

  protected function do_body_post() {
    echo "\n".'<a href="#menu-toggle" class="btn btn-secondary" id="menu-toggle">Sideber</a>';
    include __DIR__ . '\includes\body_post.html' ;
  }

  public function do_body() {
    $this->do_body_pre()  ;
    $this->do_body_main() ;
    $this->do_body_post() ;
  }
}
?>

親クラスではbody内で実行する処理を、do_body_pre、do_body_main、do_body_postに分ける。 do_body_pre、do_body_postではナビやサイドバーなど共通内容が多いものを記述する。 do_body_mainではオーバーライドされる前提でページのコンテンツを記述するメソッドとする。


継承クラス(file=index.php)

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title>work_php1</title>

    <!-- Bootstrap core CSS -->
    <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="css/simple-sidebar.css" rel="stylesheet">
  </head>

  <body>
    <?php
      include "tmp.php" ;
      class c_index extends tmp {
        function do_body_main() { include __DIR__ . '\contents\list.php' ; }
      }
      $mytmp = new c_index ;
      $mytmp->do_body();
    ?>
  </body>
</html>

ページ記述側(index.php)ではtmp.phpをincludeして継承クラスを作成し、do_body_mainにページのコンテンツを記述する。

Laravelの@yieldでコンテンツを記述していくのと同じ感じのつもり。

Code memo home

コメント

カレンダー

12 2019/01 02
S M T W T F S
2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31