get_template_part()の代わりにclassを呼び出す方法(1)クラスの使い方の基本。

前回※1、get_template_part()に引数を渡す方法を紹介しましたが、この方法では、
(1)set_query_varとget_query_varを呼び出す側と呼び出される側、計4か所に記述しなかればならないこと。
(2)変数もしくは配列は1つしか設定できない。
ことが、使いずらい点です。
そこで、今回は、これに代わる方法として、classを呼び出す方法を紹介します。

リスト1は、前回※1 のget_template_part()の事例と同様、足し算(100+10=110)を行う例です。
get_template_part()の代わりに、クラスを呼び出しています。
    $user = new addition($value) ;
は、’addition’という名前のクラスを呼び出しいる箇所です。このとき、引数$valueをクラスへ渡しています。
Class additionの中の
    public function __construct($val)
で引数を受け取っています。この例で示すとおり、引数の名前は渡す側と受け取る側で異なっていてもかまいません。(引数名が渡す側は$value、受け取り側が$valと異なっていてかまいません。)

リスト2は、計算する部分と表示する部分を別のクラスで表現したものです。

リスト3は、リスト2を発展させ、計算方法を足し算とかけ算の2通り、表示形式を通常の文字と太文字の2通り、計4通りの場合に対応できるようにしたものです。
呼び出し側は、計算方法$calcと書式$formatを引数としてクラスへ渡すことによって、2種類の計算方法と2種類の表示方法を共通のコードで処理できます。

コード例

リスト1 計算するClassと表示するClassの分離①

呼び出す側

$value = array('100','10') ;
echo 'a='.$value[0].',b='.$value[1] ;
$user = new Model36179($value) ;//Modelクラスを呼び出し。

呼び出される側(Class)

class Model36179//計算するクラス。
{
	public function __construct($value)
	{
		$sum =$value[0]+$value[1] ;
		$user = new View36179($sum) ;//Viewクラスを呼び出し
	}//endfunction
}//endclass

class View36179//表示するクラス。
{
	public function __construct($sum)
	{
		?><br><?php
		echo ' a+b='.$sum ;
	}//endfunction
}//endclass

リスト1 の実行結果

a=100,b=10
a+b=110

リスト2 計算するClassと表示するClassの分離②

呼び出す側

$value = array('100','10') ;
echo 'a='.$value[0].',b='.$value[1] ;
$user = new Model36182($value, 'add', 'normal') ;
$user = new Model36182($value, 'add', 'bold') ;
$user = new Model36182($value, 'multi', 'normal') ;
$user = new Model36182($value, 'multi', 'bold') ;

呼び出される側(Class)

class Model36182//計算するクラス。
{
	public function __construct($value, $calc, $format)
	{
		?><br><?php
		echo $calc.' ' ;	
		if($calc == 'add'){
			$result =$value[0]+$value[1] ;			
		}elseif($calc == 'multi'){
			$result =$value[0]*$value[1] ;			
		}
		$user = new View36182($result, $format) ;
	}//endfunction
}//endclass

class View36182//表示するクラス。
{
	public function __construct($result, $format)
	{
		echo $format.' ' ;
		if($format == 'normal'){
				echo $result ;		
		}elseif($format == 'bold'){
			?><b><?php
				echo $result ;
			?></b><?php			
	}
	}//endfunction
}//endclass

リスト2 の実行結果

a=100,b=10
Add Normal 110
Add Bold 110
Multi Normal 1000
Multi Bold 1000

参考記事

この記事を参照している記事

コメントよろしくお願いします。