9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでオブジェクト指向 用語と使い方

Last updated at Posted at 2016-07-13

インスタンス

  1. インスタンス生成はnew
  2. メンバ = フィールド+メソッド
  3. インスタンスは独立
  4. メソッドは参照渡し
  5. メソッドには参照渡し、値渡しがある[詳細]
    ※mpywさんありがとうございます!

ざっくりまとめ

引数の型 渡し方 メソッド内:値変更可否 メソッド内:参照変更可否
変数 値渡し x x
変数 参照渡し(&) x x
array 値渡し x x
array 参照渡し(&) x o
Object 値渡し o o
Object 参照渡し(&) o x
class Product
{
    // フィールド
    private $hoge

    // メソッド
    public function bizz()
    {
        return $this->hoge;
    }
}

$product = new Product();
$product->bizz();

コンストラクタ

  1. インスタンス生成時に実行
  2. 基本はpublic
class Product
{
    public function __construct()
    {
    }
}

カプセル化

  1. privateで宣言
  2. 外部との結びつきを弱めるリファクタリングを容易化
  3. 外部からの改悪に対して必要最低限の公開が目的

継承

  1. クラスのフィールドとメソッドを引き継ぐ
  2. privateは引き継がれない
  3. protectedは継承先のクラスでのみ参照可能
  4. 継承はextends
  5. 類似クラスはコピペではなく、保守を考えて継承
class ParentProduct
{
    protected $hoge
    private function $bizz()
    {
    }
}

class Product extends ParentProduct
{
    private function $bizzbizz()
    {
    }
}

オーバーライド

  1. 親クラスと同一名でメソッドの上書き
  2. 親クラスのメソッド呼び出しにはparent::メソッド名

静的メンバ

  1. スタティック(静的)メンバ
  2. 「public static メソッド/フィールド」で宣言
  3. 呼び出しは「クラス名::メソッド/$フィールド」
  4. インスタンス化不可
  5. シングルトンはコンストラクタをprivateとして自己呼び出し
  6. 自己呼び出しには「self()/self::$フィールド名」

定数

  1. 定数「define(定数名、値)」
  2. クラス定数「const 定数名=値」
  3. 他クラスよりクラス定数参照「クラス名::定数名」
  4. クラス内参照「self::定数名」

抽象クラス

  1. 継承しないと使用不可
  2. 抽象メソッドは必ずオーバーラードする
  3. 生成はabstract(クラス/メソッド)
  4. 継承はextends
  5. 多重実装不可

インターフェース

  1. 定義は抽象メソッドのみ = 全てオーバーライド
  2. 抽象クラスの定義にabstractは不要だが必ずpublic
  3. 生成は**interface(クラスのみ)
  4. 継承は**implements
  5. 多重実装可

ポリモーフィズム

  1. 同一名のメソッドによる処理
  2. 型の曖昧さをなくすのがタイプヒンティング
  3. 条件分岐をクラス名で変えてしまう
  4. インターフェースの多重実装と同等の意
// タイプヒンティング例
//  Bizzクラスしか処理しない
public function hoge(Bizz $bizzbizz)
{
    $product->bizz()
    $this->products[] = $product;
}

例外処理

  1. PHPは自動で例外を投げない
  2. throw new Exception()で投げる
try{
    throw new Exception();
} catch(Exception $e) {
}
9
8
4

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
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?