ただいまコメントを受けつけておりません。
雑記 > codeのメモ > 【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でコンテンツを記述していくのと同じ感じのつもり。
ただいまコメントを受けつけておりません。