PHPでオブジェクト指向

このページは自分用のメモであり。
このページのサンプルプログラムや記事は間違った解釈をしている可能性があります

PHPでオブジェクト指向プログラミング

現在オブジェクト指向プログラミングを取り入れつつあります

オブジェクト指向(クラス)にして思った事は、
「デバッグしやすくなった気がする」「関数名の重複などをあまり気にしなくていい」
といったところは 良いなと思いました

ただ、いちいち new と書かないとだめ?なところは面倒くさいなと思った

クラスとは?

ものすごく簡単に言うと「クラスとは、変数と関数の集まり」である

クラスを使用したサンプルプログラム

testクラスのplus()メソッドでは、+50してくれます。testクラスのmainasu()メソッドでは -50します

class test{//testクラスを作成します
	public $number;//変数です
		function plus(){//関数1です
			return $this->number +50;
			//plus()関数では,$numberに50を足します
		}
		function mainasu(){//関数2です
			return $this->number -50;
			//mainasu()関数では$numberから50を引きます
		}	
}
/////////testクラスの定義ここまで/////////

//////先ほど作成したtestクラスを使用します////
$hensuu = new test();
//$hensuuは testクラスを使用した変数です
$hensuu->number = 15;
//$hensuuはtestクラスの中の$numberです。その値は15です
echo $hensuu->plus();
//$hensuuから testクラスのplus()関数を使用したものをechoしなさい
echo '<br />';
echo $hensuu->mainasu();
//$hensuuから testクラスのmainasu()関数を使用したものをechoしなさい

結果
65
-35

クラスを使用したサンプルプログラム2 (カプセル化)

やっていることは 上のプログラムと同じだけど、値に変な文字列を代入してみた

//カプセル化
class test2{
	private $number;//カプセル化する場合はprivateを使用する
	/////この関数がカプセル化関数/////
		public function set($number){
			if(is_int($number)){
				$this->number = $number;
			}else{
				throw new Exception('不正な値です');
			}
		}
	////ここまでがカプセル化関数////		
		public function plus(){
			return $this->number +50;
		}
		public function mainasu(){
			return $this->number -50;
		}
}
try{
	$hensuu = new test2();
	$hensuu->set('文字列');
	echo $hensuu->plus();
	echo '<br />';
	echo $hensuu->mainasu();
}catch(Exception $e){
	echo $e->getmessage();
}
結果
不正な値です

クラスを使用したサンプルプログラム3

文字の色を変化させるスクリプト

class color{
private $color;
//この下の3つがメソッド部分
public function red($color){
	return $color = '<span style="color:red">'.htmlspecialchars($color,ENT_QUOTES).'</span>';
	}
public function yellow($color){
	return $color = '<span style="color:yellow">'.htmlspecialchars($color,ENT_QUOTES).'</span>';
	}
public function blue($color){
	return $color = '<span style="color:blue">'.htmlspecialchars($color,ENT_QUOTES).'</span>';
	}
}
//ここまでメソッド
$color = new color;
$moji1 = '赤';
$moji2 = '黄';
$moji3 = '青';
//この下がいわゆるインスタンスの部分
echo $color->red($moji1);
echo $color->yellow($moji2);
echo $color->blue($moji3);
結果


上のプログラムは特にクラス化する意味がないような気がした
普通のユーザー関数でなんら問題がないような気がする・・・・・・