⊗ppMVDFmMdP 35 of 35 menu

独自MVCフレームワークにおける全てのモデルの親の実装

全てのモデルの親クラスを実装してみましょう:

<?php namespace Core; class Model { private $link; public function __construct() { $this->link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); mysqli_query($this->link, "SET NAMES 'utf8'"); } protected function findOne($query) { // ここに何らかのコードが入ります } protected function findMany($query) { // ここに何らかのコードが入ります } } ?>

ご覧の通り、クラスのコンストラクタでデータベースへの接続を行っています。 しかし、問題があります:作成される各モデル(1つのコントローラーアクション内に複数のモデルがある場合)がそれぞれ独自のデータベース接続を行い、これは最適ではありません。

最初に作成されたモデルのためにのみデータベース接続が作成され、残りのモデルが既に作成された接続を使用するようにしてみましょう。そのために、プロパティlinkを静的(static)にします:

<?php namespace Core; class Model { private static $link; public function __construct() { if (!self::$link) { // プロパティが設定されていない場合は接続します self::$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); mysqli_query(self::$link, "SET NAMES 'utf8'"); } } protected function findOne($query) { } protected function findMany($query) { } } ?>

記載されたクラスModelのコードをコピーし、ファイル/core/Model.phpに配置してください。

このクラスにメソッドfindOneを実装してください。 その動作を確認してください。

このクラスにメソッドfindManyを実装してください。 その動作を確認してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否