概要
PHPの独学で学んだことをアウトプットしていく
前回の内容
[PHP基礎 Part6]
[PHP基礎 Part6]:https://qiita.com/k__aizawa/items/f9195b105cc4caa48fed
オブジェクト指向について
オブジェクトつまり「もの」を対象にした考えである
ものを作り、ものを操作するといった考え方
プログラミングでもオブジェクト思考をベースに実装することで、
プログラムにおける役割の明確化やコードの可読性・保守性に役立つ。
例えばECサイトであれば、「商品」「ユーザー」「カート」といったオブジェクトが存在し、
それぞれのコードを用意するようなイメージである
オブジェクト
直訳すると「もの」になる
プログラミング上では、データや処理の集まりを指す
上記のECサイトの例で考えると、ECサイトの利用者には氏名、年齢、性別、住所といったデータがある
また、ECサイトでは商品をカートに入れる、支払方法を選ぶ、購入するといった処理がある
クラス
オブジェクトの設計書のような役割を持つ
オブジェクトの中に、後述するプロパティやメソッドを一纏めにしたもの
以下は、飲食店での注文を想定したプログラムを作成する
<?php
class Menu { // クラスは「class クラス名」と定義する
// クラスの内容を入力
}
?>
インスタンス
クラスという設計書をもとに作成されたものを指す
<?php
class Menu {
}
$menu1 = new Menu(); // インスタンスは「new クラス名()」と定義する
$menu2 = new Menu();
$menu3 = new Menu();
?>
プロパティ
オブジェクトが保有するデータや属性を表す
<?php
class Menu {
public $name; // プロパティは「public $プロパティ名」と定義する
}
$menu1 = new Menu();
$menu2 = new Menu();
$menu3 = new Menu();
?>
作成したプロパティへアクセスするには以下の通り
<?php
class Menu {
public $name;
}
$coffee = new Menu(); // インスタンス名 -> プロパティ名で該当のインスタンスへのアクセスが可能
$coffee -> name = 'COFFEE'; // プロパティに値をセットする
echo $coffee -> name; // セットしたプロパティにアクセスする
// 結果:COFFEE
?>
メソッド
オブジェクトに関する処理や操作を指す
関数と全く同じわけではないが、特徴は似ているくらいの認識でOK
<?php
class User {
public $name;
public function order(){ // メソッドは「public function メソッド名()」と定義
echo 'ご注文はどれにしますか?';
}
}
作成したメソッドを呼び出すには以下の通り
<?php
class User {
public $name;
public function order(){ // メソッドは「public function メソッド名()」と定義
echo 'ご注文はどれにしますか?';
}
$coffee = new Menu();
$coffee -> order(); // インスタンス -> メソッド名でメソッドの呼び出しが可能
}
?>
また、メソッド内でインスタンスのプロパティやメソッドに
アクセスしたい場合、__「$this」__という特殊な変数を用いる
<?php
class Menu {
public $name;
public function order(){
echo 'ご注文は'.$this->name.'でよろしいですか?';
}
}
$coffee = new Menu();
$coffee -> name = 'COFFEE';
$coffee -> order();
// 結果:ご注文はCOFFEEでよろしいですか?
?>
コンストラクタ
メソッドの一種で、newを用いてインスタンスを作成する時、
コンストラクタが自動的に呼ばれる
<?php
class Menu {
public function __construct(){ // コンストラクタの作成
echo 'メニューを作成します'; // コンストラクタ内で行いたい処理
}
}
$coffee = new Menu();
// 結果:メニューを作成します
?>
また、コンストラクタは引数を設定することも可能
<?php
class Menu {
public $name;
public function __construct($name){ // 受け取る引数の設定
echo $name; // コンストラクタ内で行いたい処理
}
}
$coffee = new Menu('COFFEE'); // コンストラクタへ与える引数を設定
// 結果:COFFEE
?>
コンストラクタ内で$thisを使用し、インスタンスのプロパティをセットすることも可能
<?php
class Menu {
public $name;
public function __construct($name){
$this -> name = $name; // $thisを用いて、インスタンスのプロパティを設定
}
}
$coffee = new Menu('COFFEE');
echo $coffee -> name;
// 結果:COFFEE
?>