meraの日記: デザインパターン
日記 by
mera
<?php
/*
Javaのデザインパタンの本を読みながら一晩中コーディングしてました。 おぉ、この部分はこのデザインパタンが適用できる、ってな感じで。 PHPだからJavaのがそのままもってこれるわけじゃないけど考え方とかはものすごく参考になるかも。とりあえずPHPイテレータの試作版とか作ってみた
*/
class Iterator {
var $stKeys ;
var $iIndex ;
function Iterator( &$oArray ) {
$this->stKeys = array_keys( $oArray ) ;
$this->iIndex = 0 ;
}
function next() {
if( $this->iIndex < count( $this->stKeys ) ) {
$stKey = $this->stKeys[ $this->iIndex ] ;
$this->iIndex++ ;
return $stKey ;
} else {
return false ;
}
}
}
// てな感じのクラスを利用するとこんな感じで使用可能
$oIt = new Iterator( $配列変数名 ) ;
while( $stKey = $oIt->next() ) {
echo $stkey . "=" . $配列変数名[$stKey] . "<br>\n" ;
}
// でも、普通に書いてもあんましコーディングの手間は変わらない。こんな感じ
reset( $配列変数名 ) ;
while( list( $stKey, $stValue) = each( $配列変数名 ) ) {
echo $stKey . "=" . $stValue . "<br>\n" ;
}
/*
前者は数えてる最中に配列内容に追加・削除等更新があったらずれが生じてしまうのでそこらへん気ぃつけないとダメかも。後者は数えてる最中に別のところから数えるというワザが使えないのと、かならず内部配列読み出しポインタをresetでクリアしないといけないのが注意かも。
*/
?>
/*
Javaのデザインパタンの本を読みながら一晩中コーディングしてました。 おぉ、この部分はこのデザインパタンが適用できる、ってな感じで。 PHPだからJavaのがそのままもってこれるわけじゃないけど考え方とかはものすごく参考になるかも。とりあえずPHPイテレータの試作版とか作ってみた
*/
class Iterator {
var $stKeys ;
var $iIndex ;
function Iterator( &$oArray ) {
$this->stKeys = array_keys( $oArray ) ;
$this->iIndex = 0 ;
}
function next() {
if( $this->iIndex < count( $this->stKeys ) ) {
$stKey = $this->stKeys[ $this->iIndex ] ;
$this->iIndex++ ;
return $stKey ;
} else {
return false ;
}
}
}
// てな感じのクラスを利用するとこんな感じで使用可能
$oIt = new Iterator( $配列変数名 ) ;
while( $stKey = $oIt->next() ) {
echo $stkey . "=" . $配列変数名[$stKey] . "<br>\n" ;
}
// でも、普通に書いてもあんましコーディングの手間は変わらない。こんな感じ
reset( $配列変数名 ) ;
while( list( $stKey, $stValue) = each( $配列変数名 ) ) {
echo $stKey . "=" . $stValue . "<br>\n" ;
}
/*
前者は数えてる最中に配列内容に追加・削除等更新があったらずれが生じてしまうのでそこらへん気ぃつけないとダメかも。後者は数えてる最中に別のところから数えるというワザが使えないのと、かならず内部配列読み出しポインタをresetでクリアしないといけないのが注意かも。
*/
?>
デザインパターン More ログイン