はじめに
- オブジェクト指向について本やネットの情報から調べて理解したことをまとめました。
- もし、書いていることに何か間違いがある場合はご指摘いただけると嬉しいです。
オブジェクト指向とは
- 機能をオブジェクトごとにまとめて、プログラムを書いていくという考え方です。
- PHPでは、クラスという設計図をもとにインスタンス(オブジェクトとも呼ばれる)を生成していきます。
オブジェクトとは
- データ(変数)と機能(関数)をまとめたモノ(オブジェクト)。
クラスとは
- オブジェクトの設計図。
- テンプレート(雛形)のようなイメージ。
- クラスを元にオブジェクトを作っていきます。
クラスの書き方
- クラスは「class クラス名」と定義する。
- クラス名は大文字で始めます。
<?php
class Products{
//ここに処理が入ります
}
?>
オブジェクト指向のイメージ
設計図にまとめられている内容
-
「データ」
- 商品名
- 金額
-
「機能」
- 商品を出す
- おつりを計算する
この設計書を元に自動販売機を作成していきます。
設計書があるため、設計書を元に自動販売機を量産することも可能です。
オブジェクト指向の場合
- オブジェクト指向の場合、現実世界の設計書のことを「クラス」と呼びます。
- データのことを「プロパティ」と呼び、機能のことを「メソッド」と呼びます。
インスタンスとは
- クラス(設計図)をもとに実体化されたものをインスタンスと言います。(オブジェクトとも呼びます)
- インスタンスは「new クラス名()」で生成できます。
インスタンスの書き方
<?php
class Products{
}
$product = new Products();
?>
プロパティとは
- クラスが持つ変数(データ)のことです。
- クラスで定義された変数のことを「プロパティ」と言います。
プロパティの書き方
- プロパティは「public $プロパティ名」で定義します。(publicの他にprotectedやprivateが入ります)
<?php
class Products{
public $name = "パソコン";
}
$product = new Products();
?>
プロパティの呼び出し方
- 「インスタンス->プロパティ名」で、そのインスタンスが持つプロパティを呼び出すことができます。
- クラスに定義されている値を取り出すようなイメージです。
<?php
class Products{
public $name = "パソコン";
}
$product = new Products();
echo $product->name;
メソッドとは
- クラスが持つ関数のことです。
- クラスで定義された関数を「メソッド」と言います。
メソッドの書き方
- メソッドは「public function メソッド名()」のように定義します。
- 「インスタンス->メソッド名()」でメソッドを呼び出します。
<?php
class Products{
public $name = "パソコン";
public function sayProduct(){
echo "商品名:" . $this->name;
}
}
$product = new Products();
$product->sayProduct();
?>
オブジェクト演算子「->」とは
- 「->」の記号のことをオブジェクト演算子と言います。
-
「インスタンス->プロパティ名」
、「インスタンス->メソッド名()」
や「$this->プロパティ名」
、「$this->メソッド名()」
のように定義します。 - 右辺には左辺が持つプロパティやメソッドを指定します。そうすることで、そのクラスが持つプロパティやメソッドを呼び出すことができます。
$thisとは
- クラス内のプロパティやメソッドを呼び出したい時に「$this」を使います。
- 「このクラス内の」という意味になります。
- 「$this」はクラス内の定義したメソッドの中でのみ使用できます。
$thisの書き方
<?php
class Products{
public $name = "パソコン";
public function sayProduct(){
echo $this->name;
}
}
?>
コンストラクタとは
- 「__construct」を定義すると、newを用いてインスタンスが生成される度にこのメソッドが呼ばれる。
- __constructメソッドは引数をとることができます。
- インスタンスを生成する時に引数を与えることができ、その引数の値が__constructメソッドに渡されます。
コンストラクタの書き方
<?php
class クラス名 {
アクセス修飾子 function __construct(引数) {
//ここに処理が入ります
}
}
?>
コンストラクタのコード例
<?php
class Products{
public function __construct($name){
echo $name;
}
}
$product = new Products("パソコン");
?>
実行結果
パソコン