<?php
##counter0.0.4.php##
class Counter extends Files
{
var $countNumber;
//カウンターを実行する
function doCounter()
{
$this->getData();
$this->updateNumber();
$this->setUpdatedData($this->countNumber);
$this->writeData();
}
//カウントする
function updateNumber()
{
$this->gottenData++;
$this->countNumber = $this->gottenData;
}
//数を表示する
function displayNumber()
{
echo $this->countNumber;
}
}
class Files
{
var $resorce;
var $address;
var $maxDataSize;
var $gottenData;
var $updatedData;
//コンストラクタでファイルパス、データサイズの限界をセット
function Files($fileConfig)
{
$this->address = $fileConfig['address'];
$this->maxDataSize = $fileConfig['maxDataSize'];
}
//ファイルを開く、ロックする、取得する
function getData()
{
$fp = fopen($this->address, "r+");
$this->resorce = $fp;
flock($this->resorce, LOCK_EX);
$this->gottenData = fgets($this->resorce, $this->maxDataSize);
}
//更新されたデータをセットする
function setUpdatedData($updatedData)
{
$this->updatedData = $updatedData;
}
//ファイルに書き込む、閉じる
function writeData()
{
rewind($this->resorce);
fwrite($this->resorce, $this->updatedData);
fclose($this->resorce);
}
}
/*
こんな感じで使います
include 'counter.php'; //counter.phpはこのファイルです。
$fileConfig['address'] = 'log.txt';
$fileConfig['maxDataSize'] = 64;
$counter = new Counter($fileConfig);
$counter->doCounter();
$counter->displayNumber();
変更点
1,ファイルクラスをコンストラクタでパスとサイズを取得
2,カウンターのメソッド名をDBにも対応できるように変更
3,カウンタークラスとファイルクラスの結合を疎なものにしたつもり
*/
?>