PHP
HTML
CSS
オブジェクト指向
新人プログラマ応援

[PHP]オブジェクト指向に基づいたコーディング

今回書いた内容

PHPでのオブジェクト指向に基づいたコーディング

この記事を書いた理由

・忘れた時に確認するため

この記事を読むのに向いていない人

・「オブジェクト指向について詳しく教えて欲しい」と考えている人

この記事を書いた人の特徴

・学生時代:文系(プログラミングに全く興味なし)
・社会人:プログラミングに興味を持ち、独学で勉強中。
・Ruby/Rails/Python/JavaScript/jQueryは好き
PHPは嫌い

コード例

product.php
class Product {
 //プロパティの設定
 protected $name; //商品名
 protected $price; //価格
 protected $stock; //在庫数
 protected $memo; //備考
 protected static $count = 0 //商品の種類数

 public function __construct($name,$price,$stock,$memo){
  $this->name = $name;
  $this->price = $price;
  $this->stock = $stock;
  $this->memo = $memo;
  self::$count++;
}

 //ゲッター・セッター
 public function getName(){
  return $this->name;
 }

 public function getPrice(){
  return $this->price;
 }

 public function getStock(){
  return $this->stock;
 }

 public function getMemo(){
  return $this->memo;
 }

 public static function getCount(){
  return self::$count;
 }

継承

drink.php
require_once('product.php');

class Drink extends Product{
 private $amount //容量

 public function __construct($name,$price,$stock,$memo,$amount){
  parent::__construct($name,$price,$stock,$memo);
  $this->amount = $amount;
 }

 public function getAmount(){
  return $this->amount;
 }
}
food.php
require_once('product.php');

class Food extends Product{
 private $calorie //容量

 public function __construct($name,$price,$stock,$memo,$calorie){
  parent::__construct($name,$price,$stock,$memo);
  $this->calorie = $calorie;
 }

 public function getCaloriet(){
  return $this->calorie;
 }
}
data.php
require_once('drink.php');
require_once('food.php');

//新しいインスタンスを立てる
$drink1 = new Drink('綾鷹',129,10,'販売:コカコーラ',500);
$drink2 = new Drink('伊右衛門',129,15,'販売:サントリー',500);
$food1 = new Food('おにぎり',105,10,'具:鮭',200);
$food2 = new Food('パン',110,15,'メロンパン',300);

$products = array($drink1,$drink2,$food1,$food2);
index.php
require_once('data.php');

echo '取り扱い商品数:{Product::getCount()}';

foreach($products as $product){
 if($product instanceof Drink){
  echo '{$product->getName()}({$product->getAmount()}ml) ¥{$product->getPrice}- 在庫数:{$product->getStock()}'
 } else {
  echo '{$product->getName()}({$product->getCalorie()}cal) ¥{$product->getPrice}- 在庫数:{$product->getStock()}'
 }
}