PHP

設計図から「もの」をつくる(オブジェクト指向)

:pencil2: 「設計図」と「もの」

 プログラミングの世界では「設計図」をもとに「もの」をつくるという仕組みがあります。この仕組みを使うと、プログラムの役割がはっきりとして、それらを組み立てるようにプログラムを書くことができます。

 プログラミングにおける「設計図」のことをクラス、それをもとに作られた「もの」をインスタンスとよびます。

クラス:いわゆる「設計図」

インスタンス:クラス(設計図)をもとに作られた「もの」

ここまでのことを図にして簡単にまとめると以下のような流れになります

クラス(設計図)

--  |  --
  (生成)
--  ↓  --

インスタンスA (ものA)
インスタンスB (ものB)
インスタンスC (ものC)
...

 インスタンス(もの)を生成するにはその基となるクラス(設計図)が必要ですし、クラスだけあってもインスタンスを生成しなければ何も動きません。

:pencil2: 基本的な使い方の流れ

 ① クラス(設計図)を作成する
 ② クラスにデータを入れる(プロパティ・メソッド)
 ③ クラスをもとに「もの」(インスタンス)を作成する。
 ④ インスタンスに値を代入する
 ⑤ プロパティ、メソッドを呼び出す

 プロパティ:インスタンスが持つデータ(名前・色・値段等)
  メソッド : インスタンスに関連する処理(関数)

:arrow_forward: プログラミングでの書き方

object.php
<?php
class Menu {
  // プロパティ
  public $name;

  // メソッド
  public function hello() {
    echo "インスタンスが生成されました";
  }
}

$sushi = new Menu(); // new でインスタンスを生成
$sushi->name = "すし"; // プロパティに値を代入

echo $sushi->name; // すし(プロパティの呼び出し)
$sushi->hello(); // インスタンスが生成されました(メソッドの呼び出し)

?>

:pencil2: コンストラクタについて

基本的な流れの

 ③ クラスをもとに「もの」(インスタンス)を作成する。
 ④ インスタンスに値を代入する

を一度に行うことが出来るので便利。

object.php
<?php
class Menu{
 public $name;

 // コンストラクタ
    public function __construct($name){
    $this -> name =$name;
    }
}

$sushi = new Menu("すし"); 
$pizza = new Menu("ピザ");

echo $sushi->name; //すし
echo $pizza->name; //ピザ
?>

$this → 生成されるインスタンス「自身」のこと

$sushi という変数で代入されたインスタンスなら、この $this は $sushi のことを指し、$pizzaであれば、この $this は $pizza のことを指します。

:pencil2: __constructでは、パッと見では分からない?

 __construct という単語を見るだけではイマイチ良く分からない印象を受けますが、Java でコンストラクタを使うときになると、構造が分かりやすくなったので少しだけ紹介します。

 Java でコンストラクタを使用するには、「クラス名と同じにする」というのがあります。PHP でも同じように考えて良く見てみると、

 // コンストラクタ
    public function Menu($name){
    $this -> name =$name;

-----------------------------

$sushi = new Menu("すし"); 
$pizza = new Menu("ピザ");

 「関数(メソッド)」と同じような構造になっているのが分かるかと思います。コンストラクタがイマイチ良く分からないときは、このような考え方で進めてみると分かりやすくなるかと思います。