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();として出します。