「PHPでオブジェクト指向入門10~アクセサメソッド(カプセル化)~」の編集履歴(バックアップ)一覧に戻る

PHPでオブジェクト指向入門10~アクセサメソッド(カプセル化)~ - (2015/11/09 (月) 00:36:46) のソース

前回記事[[PHPでオブジェクト指向入門9~アクセス装飾子(カプセル化)~]]ではpublicとprivateについて学習しました。
実際のコードを見ていきましょう。長方形の面積を計算しますが、エラーならば値が不正ですというようにしていきたいと思います。11月7日記事
~
~
目次
#contents
~
~
----
~
*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は呼び出されるようにしておくと最初は思いがちですが、チェックしたものを呼び出すのがここでは重要な点です。つまり何を隠して、何を呼び出す準備しておけばいいのかというイメージがとても必要です。
~
~
以上