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