PHP5でオブジェクト指向

PHP4からPHP5にかけて、大きく変化したところと言えば、本格的なオブジェクト指向言語になったことだと思います。

そこで、PHP5によるオブジェクト指向がどんなものかを試しにコーディングしてみました。

<?php

class PcShopping
{
public $item = "VAIO";
public $price = 100;
public static $parts = "memory";

function getPcTotal()
{
$tax = $this->price * 0.05;
return $this->price + $tax;
}

function getPcItem()
{
return $this->item;
}

}

class ShoppingInJapan
{
public $item;
public $price;

function __construct($item,$price)
{
$this->item = $item;
$this->price = $price;

}

function getTotal()
{
$tax = $this->price * 0.05;
return $this->price + $tax;
}

function getItem()
{
return $this->item;
}

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

}

class ShoppingInAmerica extends ShoppingInJapan
{
function getTotal()
{
$discount = $this->price * 0.2;
$tax = ($this->price - $discount) * 0.08;
return $this->price - $discount + $tax;
}
}

$result = new PcShopping();
print $result->item." is ".$result->getPcTotal()."\n";
print "Item is ".$result->getPcItem()."\n";
print "Parts is ".PcShopping::$parts."\n";
print "------------------------------------------\n";

$result = new ShoppingInJapan('DELL','1000');
print $result->getItem()." is ".$result->getTotal()."\n";
print "------------------------------------------\n";

$result = new ShoppingInAmerica('DELL','1000');
print $result->getItem()." is ".$result->getTotal()."\n";
print "Price is ".$result->getPrice()."\n";
print "------------------------------------------\n";

?>

うーん、やっぱりオブジェクト指向の真髄は継承なのかな。

これをコマンドラインで実行すると、

[admin@server04 PHP_OBJ]$ php5 test.php
VAIO is 105
Item is VAIO
Parts is memory
------------------------------------------
DELL is 1050
------------------------------------------
DELL is 864
Price is 1000
------------------------------------------

継承は強烈ですな。