前回「【php】独自のJavaScript Ajaxを使ったphp向けMVC階層設計、IE6対応」(クリックするとリンクが開きます)の記事で、phpがMysqlデータベースにクエリするためのmodel.phpの書き方がうまくいきませんでした。メソッド内で、mysql の $con オブジェクトを自分で宣言し、同時に mysql の $con オブジェクトを自分で閉じる必要もあります。このように、クエリメソッドが多すぎると、$con オブジェクトの宣言や $con オブジェクトを閉じるためのコードが無駄に追加されてしまいます。実際、PHP のコンストラクターとデストラクターを完全に使用して、データベース クラスの各クエリ メソッドに $con オブジェクトを挿入し、同時に各クエリの後に $con オブジェクトを自動的にリサイクルすることができます。
この問題を説明するために例を挙げてみましょう。まず、私たちのタスクは非常に単純です。これは、mysql のテスト データベースの testtable テーブルの結果を、日付と時刻の降順で Web ページにクエリすることです。
以下に示すように:
まず、model.php を次のように記述します。
最初に、プライベート クラス メンバー $con をこのクラスのグローバル変数として宣言します。
データベース接続を確立するコードをデータベース クエリ クラス testtable のコンストラクター __construct() に配置し、データベース接続を閉じるコードをデストラクター __destruct() に配置できます。ここで、__construct() と __destruct () はPHP の関数名の予約キーワード。つまり、これら 2 つの関数が宣言されると、それらはコンストラクターとデストラクターとみなされます。
宣言されたプライベート クラス メンバー $con に値を割り当てるときは、$this->con 形式を使用する必要があることに注意してください。 $con=xx を直接使用することはできません。$con=xx の場合、PHP は、この変数のスコープは現在の関数内のみであり、クラス全体には影響を及ぼさないと見なします。
コンストラクターには変数 $databaseName が必要です。これは、呼び出し元がクエリする必要があるデータベースの名前です。
データベース クエリ クラスのクエリ メソッド getAll() を終了した後、データベース接続を宣言して閉じる必要はありません。クエリの後に、リサイクル用のデストラクターがあります。
まず、controller.php にこの testtable クエリ クラスを導入し、次に getAll() メソッドを呼び出すと、上記のような効果が得られます。