基本のクラス
class クラス名 {
}
書き方ですが、クラスの定義にはまずはclassの後に好きなクラス名を記述します。
class Module_Controller {
}
とういうように記述します。
class Staff {
public function work() {
echo '仕事しています',PHP_EOL;
}
}
$kato = new Staff();
$kato->work();
$sato = $kato ; $sato->work();
class Product {
private $name; // 商品名
private $price; // 価格
}
商品には名前と価格がありますので、最初に変数を宣言してみます。
class Product {
private $name; // 商品名
private $price; // 価格
// 商品名を取得する
public function getName()
{
return $this->name;
}
// 商品名を設定する
public function setName($name)
{
$this->name = $name;
}
}
メソッドはユーザー関数と同じ様に書きますが、ここではpublicという文字が付いています。
$product = new Product();
予め クラスが作られていれば、
new クラス名() でクラスのインスタンスが作られます。
上記では$product が実体になります。
// クラスを定義
class Product {
private $name; // 商品名
private $price; // 価格
// 商品名を取得する
public function getName()
{
return $this->name;
}
// 商品名を設定する
public function setName($name)
{
$this->name = $name;
}
}
//インスタンスを作る
$product= new Product();
// 商品名を設定
$product->setName("スパナ");
// 商品名を取得
$productName = $product->getName();
var_dump($productName);
実行結果
object(Product)#3 (2) {
["name":"Product":private]=>
string(9) "スパナ"
["price":"Product":private]=>
NULL
}
説明するとインスタンス(実体)を作ると、それぞフィールドが用意されます。
そして値を投げてreturnで戻るという形です。
つまりクラスが設計図なので、インスタンスは複数作れることになります。
試してみます。
上記のインスタンスを作る部分を増やしてみます。
$product01 = new Product();
$product02 = new Product();
$product01->setName("のこぎり");
$product02->setName("ハンマー");
var_dump($product01);
var_dump($product02);
object(Product)#4 (2) {
["name":"Product":private]=>
string(12) "のこぎり"
["price":"Product":private]=>
NULL
}
object(Product)#5 (2) {
["name":"Product":private]=>
string(12) "ハンマー"
["price":"Product":private]=>
NULL
}
ここで分かるように、それぞれインスタンスは別々に値を持てるということです。
それぞれオフジェクトとして利用ができます。
上記の場合に$product01の名前を出す場合は、
echo $product01->getName();として出します。