PHP 入門 インスタンスとコンストラクタ
先ほど実際にクラス定義とインスタンスを作りましたが、
クラスは設計図でインスタンスはその実体という事でほんのりと理解ができるかと思います。
例えばショッピングサイトなどで、商品を変数に入れる場合、名前と価格があり、
クラスを使わないとすれば、多次元にして対応するなどするかと思いますが、
(もしくはループして出力などその都度出力など)
実際にクラスで行う場合を想定して書いてみます。
class Product
{
private $name;
private $price;
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setPrice($price)
{
$this->price = $price;
}
public function getPrice()
{
return $this->price;
}
}
$product01= new Product();
$product01->setName('スパナ');
$product01->setPrice('1000');
echo $product01->getName() . 'という商品は'
.$product01->getPrice();
表示結果
スパナという商品は1000
上記のように$product01という変数にそれぞれ値を持たせています。
ここで、$product01、$product02 など変数毎にそれぞれの値を持たせる事ができます。
このクラスから生成された変数や仕組みインスタンスを呼びます。
どうしてprivateで宣言してるかは
カプセル化を見てみてください。
次にコンストラクタを説明します。
コンストラクタとはインスタンスの生成時にいきなり自動的に実行される処理の事です。
普通はメソッド(処理)は上記コードのようにsetPriceとか分かりやすく呼び出すして実行しますが、
コンストラクタは「new」でインスタンスを作れば処理されます。
実際に書いてみます。
class Test
{
private $name;//商品名
private $price;//価格
private $registdate;//登録日付
// コンストラクタ
public function __construct($name,$price,$registdate)
{
$this->name = $name;
$this->price = $price;
$this->registdate = $registdate;
}
public function getName(){ return $this->name; }
//商品名を取得
public function getPrice(){ return $this->price;}
//価格を取得
public function getRegi(){ return $this->registdate;}
//登録日付を取得
}
//呼び出してみます。
$product03= new Test('スパナ','1000','2011/02/03');
echo $product03->getName();
echo $product03->getPrice();
echo $product03->getRegi();
スパナ10002011/02/03
メソッド名を
__construct()とするだけです。
そしてコンストラクタのアクセス修飾子は必ず「public」にします。
インスタンス生成の時のクラス名の後の括弧「()」内に引数を記述します。
またコンストラクタは必ずpublicにします。
privateだとメソッドが呼び出せないのでインスタンスの生成が出来ません。
コンストラクタはインスタンスの初期設定などに使います。