カウンタクラス作成

カウンタ継承クラスファイル作成

カウンタ継承クラスファイルを作成することにします。
カウンタ値の数字をイメ-ジ画像で表示します。 カウンタ継承ファイル内容は、左サイドナビ「カウンタクラス作成」の中の
「カウンタ継承クラス PHP ファイル」
から見てください。
まず、Counter クラスを継承するために、count_2.phpを読込みます。
require_once ('class/count_2.php');

継承クラス名と変数宣言

まず継承クラス名を宣言します。
class Counter_Img extends Counter {・・・・・・}
継承クラスの動作を {・・・・} の中に記述します。
extends Counter は、このクラスは Counter クラスを継承していることを宣言しています。
次に使用するクラス内のメンバ変数を定義します。
private $tmp;

カウンタ継承クラスの機能

カウンタ継承クラス Counter_Img extends Counter は何をするのでしょうか?
一言でいうとカウンタ値の数字をイメ-ジ画像で表示ための変換クラスです。
元クラス class Counter からカウンタ値をもらいます。
引数 $filename にカウンタ値を保存しているファイル名を入れれば、カウンタ値 (仮にこれを $cont とします)を教えてくれます。
次に継承クラスの引数で、
$imgdir 画像ディレクトリ
$imgtype 画像タイプ(gif、png、jpg)
を教えてもらえば、表示すべきカウンタ値に対応する数字のイメ-ジ画像を知ることができます。
しかしながら、例えば、
イメ-ジ画像  : 0.jpg ~ 9.jpg
画像ディレクトリ: img/
画像タイプ   : .jpg
で、カウンタ値 $cont = 125 ならば、選択したイメ-ジ画像は、
img/125.jpg
となってしまい、125.jpg はないので表示できません。
仕方がないので、125 を一文字づつ分解して表示します。

継承クラス function ファイル作成

継承クラス class Counter_Img extends Counter {・・・・・・}
の中にある
function Counter_Img($filename,$imgdir,$imgtype){・・・・}
部分を作成していきます。
Counter_Img というクラスを呼び出されたとき処理すべき動作が {・・・・} の中に記述されています。
引数を
$filename = 'c_img.txt'
$imgdir = img/
$imgtype = .jpg
とすれば、3つの引数を渡すので、処理をお願い、ということになります。

$this->__construct($filename)

$this->__construct($filename) ってなに!
継承クラスを作成したときつまずくのがこれ。
わからないですよね。
手見上げに $filename 持って元クラスのコンストラクタにいけ、修行をして戻って来い、 帰りにはお見上げも忘れずにね。
がその意味。
お見上げは、$this->_count これは加工しなければ使えないのですが、カウンタ値出力で使います。

カウンタ値をイメ-ジ画像で出力

それではお見上げ $this->_count をおいしく加工しましょう。
PHP 関数 preg_split を使います。
$tmp = preg_split('//',$this->_count,NULL,PREG_SPLIT_NO_EMPTY);
preg_split は指定した文字列を、正規表現(今回は'//')でいくつかの文字列にを分割します。
書式は、
preg_split (分割 pattern,分割したい文字列 subject,最大文字列個数 limit,詳細指定 flags)
です。
パラメータの詳細は

分割 pattern

検索するパターンを表す文字列。
今回は '//':連続する文字列を1つづつに分割、を使用します。

分割したい文字列 subject

今回は、お見上げの $this->_count です。

最大文字列個数 limit

これを指定した場合、最大 limit 個の部分文字列を返します。
残りの文字列は、最後の部分文字列に含めて返されます。
limit が -1、0 あるいは NULL の場合は「制限が無い」ことを意味します。
制限を指定せずに flags パラメータを指定したい場合などに NULL を使用します。
今回は NULL です。

詳細指定 flags

flags は、いろいろありますが、今回は
PREG_SPLIT_NO_EMPTY
を使用します。
このフラグを設定すると、空文字列でないものだけが preg_split() により返されます。

返り値

pattern にマッチした境界で分割した subject の部分文字列の配列を返します。
今回は、$tmp の配列の中に答えが戻ります。

for 文によりカウンタ値をイメ-ジ画像で出力

後は for 文で$tmpの配列の数分まわしてイメ-ジ画像を表示して終りです。
まずは、count($tmp) で配列の数を返してもらって、
  for ($i=0;$i<count($tmp);$i++) {
 echo '<img src=" '.$this->_imgdir.$tmp[$i].$this->_imgtype.' ">';
 }
ちなみに、今回は、
$this->_imgdir : img/
$this->_imgtype: .jpg
ですので、仮に、$tmp[$i] = 0 とすると
<img src="img/0.jpg">
が出力されます。

カウンタ継承クラス Counter_Img の使い方

カウンタクラス Counter_Img を使います。
使い方は至って簡単、左サイドナビ「カウンタクラス作成」の中の
「イメ-ジカウンタ PHP ファイル」
から見てください。
それでは、実際にカウンタクラスCounter_Img を使ったイメ-ジカウンタ PHP ファイルを説明していきます。

インスタンスをつくるだけ

Counter クラスファイル count_3.php を読込む
require_once ('count_3.php');
count_3.php を読込むと count_3.php が自動的に count_2.php を読込むので 2つのクラスファイルを読み込むことになります。
カウンタ値を保存しているファイル名で、インスタンスを作成
$CNT2 = new Counter_Img('c_img.txt','img/','.jpg');
'img/'の「/」と'.jpg'の「.」を忘れずに!!
これで、WEB を開くたびにカウンタ値がアップするイメ-ジカウンタ PHP ファイルができ上がりました。


カウンタ継承クラスファイル動作確認に続く
カウンタクラスファイル動作確認に戻る

Move Imageに戻る