1
2

More than 3 years have passed since last update.

PHP基礎 Part7

Last updated at Posted at 2019-12-09

概要

PHPの独学で学んだことをアウトプットしていく

前回の内容

PHP基礎 Part6

オブジェクト指向について

オブジェクトつまり「もの」を対象にした考えである
ものを作り、ものを操作するといった考え方
プログラミングでもオブジェクト思考をベースに実装することで、
プログラムにおける役割の明確化やコードの可読性・保守性に役立つ。
例えばECサイトであれば、「商品」「ユーザー」「カート」といったオブジェクトが存在し、
それぞれのコードを用意するようなイメージである

オブジェクト

直訳すると「もの」になる
プログラミング上では、データや処理の集まりを指す
上記のECサイトの例で考えると、ECサイトの利用者には氏名、年齢、性別、住所といったデータがある
また、ECサイトでは商品をカートに入れる、支払方法を選ぶ、購入するといった処理がある

クラス

オブジェクトの設計書のような役割を持つ
オブジェクトの中に、後述するプロパティやメソッドを一纏めにしたもの
以下は、飲食店での注文を想定したプログラムを作成する

sample.php
<?php
class Menu {  // クラスは「class クラス名」と定義する
  // クラスの内容を入力
}
?>

インスタンス

クラスという設計書をもとに作成されたものを指す

sample.php
<?php
class Menu {
}

$menu1 = new Menu(); // インスタンスは「new クラス名()」と定義する
$menu2 = new Menu();
$menu3 = new Menu();
?>

プロパティ

オブジェクトが保有するデータや属性を表す

sample.php
<?php
class Menu {
  public $name; // プロパティは「public $プロパティ名」と定義する
}

$menu1 = new Menu();
$menu2 = new Menu();
$menu3 = new Menu();
?>

作成したプロパティへアクセスするには以下の通り

sample.php
<?php
class Menu {
  public $name;
}

$coffee = new Menu();       // インスタンス名 -> プロパティ名で該当のインスタンスへのアクセスが可能
$coffee -> name = 'COFFEE'; // プロパティに値をセットする

echo $coffee -> name;       // セットしたプロパティにアクセスする 
// 結果:COFFEE
?>

メソッド

オブジェクトに関する処理や操作を指す
関数と全く同じわけではないが、特徴は似ているくらいの認識でOK

sample.php
<?php
class User {
  public $name;
  public function order(){   // メソッドは「public function メソッド名()」と定義
    echo 'ご注文はどれにしますか?';
  }
}

作成したメソッドを呼び出すには以下の通り

sample.php
<?php
class User {
  public $name;
  public function order(){   // メソッドは「public function メソッド名()」と定義
    echo 'ご注文はどれにしますか?';
  }
$coffee = new Menu();
$coffee -> order();          // インスタンス -> メソッド名でメソッドの呼び出しが可能
}
?>

また、メソッド内でインスタンスのプロパティやメソッドに
アクセスしたい場合、「$this」という特殊な変数を用いる

sample.php
<?php
class Menu {
  public $name;
  public function order(){
    echo 'ご注文は'.$this->name.'でよろしいですか?';
  }
}
$coffee = new Menu();
$coffee -> name = 'COFFEE';
$coffee -> order(); 

// 結果:ご注文はCOFFEEでよろしいですか?
?>

コンストラクタ

メソッドの一種で、newを用いてインスタンスを作成する時、
コンストラクタが自動的に呼ばれる

sample.php
<?php
class Menu {
  public function __construct(){  // コンストラクタの作成
    echo 'メニューを作成します';       // コンストラクタ内で行いたい処理
  }
}

$coffee = new Menu();
// 結果:メニューを作成します

?>

また、コンストラクタは引数を設定することも可能

sample.php
<?php
class Menu {
  public $name;
  public function __construct($name){  // 受け取る引数の設定
    echo $name;                        // コンストラクタ内で行いたい処理
  }
}

$coffee = new Menu('COFFEE');          // コンストラクタへ与える引数を設定
// 結果:COFFEE

?>

コンストラクタ内で$thisを使用し、インスタンスのプロパティをセットすることも可能

sample.php
<?php
class Menu {
  public $name;
  public function __construct($name){
    $this -> name = $name;             // $thisを用いて、インスタンスのプロパティを設定
  }
}

$coffee = new Menu('COFFEE');
echo $coffee -> name;
// 結果:COFFEE

?>
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2