<?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->resorceLOCK_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,カウンタークラスとファイルクラスの結合を疎なものにしたつもり
*/
?>