前回記事PHPでオブジェクト指向入門9~アクセス装飾子(カプセル化)~ではpublicとprivateについて学習しました。 実際のコードを見ていきましょう。長方形の面積を計算しますが、エラーならば値が不正ですというようにしていきたいと思います。11月7日記事

目次





privateとpublic

横の変数$widthと縦の変数$heightはクラスの中で値をチェックするために外から呼び出されないようにprivateにします。また、外から呼び出される方はpublicにしておきます。

コード

Rectangle.php

<?php

class Rectangle{
	private $width;
	private $height;
	
	//プロパティ値を初期化
	public function __construct(){
		$this->width = "値が不正です。";
		$this->height = "値が不正です。";
	}
	
	//widthプロパティのゲッターメソッド
	public function getWidth(){
		return $this->width;
	}
	
	//widthプロパティのセッターメソッド
	public function setWidth($width){
		if(is_numeric($width) && $width > 0){
			$this->width = $width;
		}
	}

	//heightプロパティのゲッターメソッド
	public function getHeight(){
		return $this->height;
	}
	
	//heightプロパティのセッターメソッド
	public function setHeight($height){
		if(is_numeric($height) && $height > 0){
			$this->height = $height;
		}
	}

	//計算
	public function getArea(){
		if($this->width === "値が不正です。"|| $this->height === "値が不正です。"){
			return "値が不正です。";
		}else{
			return '面積は'.$this->getWidth() * $this->getHeight().'です。';
		}
	}
}

?>

index.php

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>アクセサメソッド</title>
</head>
<body>
<?php
require ('../class/Rectangle.php');
 
$f = new Rectangle();
$f->setWidth(10);
$f->setHeight(-10);
print $f->getArea();

?>
</body>
</html>



実行結果

どちらかを負の数や文字列にすると値は不正ですと出ます。

まとめ

$widthは呼び出されるようにしておくと最初は思いがちですが、チェックしたものを呼び出すのがここでは重要な点です。つまり何を隠して、何を呼び出す準備しておけばいいのかというイメージがとても必要です。

以上

最終更新:2015年11月09日 00:36