PHPオブジェクト指向実践
カウンター
静的メソッドにする
基本の仕組み構築の部分で、あれ?と思われたかもしれません。
初級編と比べてカウンターの処理呼び出しが違います。
初級編ではカウンタークラスをnewしてインスタンスを生成していたのに対して、基本の仕組み構築のところのサンプルコードではnewはせず、静的メソッドを直接呼び出しています。
初級編のほうを見ていただければ分かるとおり、カウンタークラスにはフィールドが一個もありません。この場合、メソッドをインスタンスメソッドとする必要はありません。静的メソッドにするのです。そのほうがインスタンス生成の手間が省けます。
こんなかんじです。
<?php class Counter { const DATA_FILE_NAME = '/count.dat'; // カウンター値取得 public static function get() { $cnt = 0; if (true == file_exists(DATA_ROOT . self::DATA_FILE_NAME)) { // データ保存ファイルからデータ取得 $fp = fopen(DATA_ROOT . self::DATA_FILE_NAME, 'r'); $data = trim(fgets($fp)); fclose($fp); // データが数値ならカウンター値として取得 if (true == is_numeric($data)) { $cnt = $data; } } return $cnt; } // カウンター加算処理 public static function increment() { // 現在のカウント値を取得 $cnt = self::get(); // カウントを1増やす $cnt++; // データ保存ファイルに上書きする $fp = fopen(DATA_ROOT . self::DATA_FILE_NAME, 'w'); fputs($fp, $cnt); fclose($fp); } } ?>
まあ、違いって本当に「static」が付いただけなんですけどね。
それで問題ないようなクラスならその方が楽なので。

基本の仕組み構築

