🐘

PHPのクラス周りを復習

2021/06/20に公開

クラス基本

class クラス名
{
  プロパティ 👉 変数
  メソッド 👉 関数
}

$インスタンス名 = new クラス名();
$インスタンス->プロパティ;
$インスタンス->メソッド(引数);

インスタンスを別クラスに渡す

👉 依存関係を生みやすい

$hoge = new Poyo();
$fuga = new Piyo();

$fuga->メソッド($hoge);

抽象クラスと継承

👉 依存関係を生みやすい

abstract class 抽象クラス名//スーパークラス
{
  プロパティ
  メソッド
  抽象メソッド 👉 サブクラスで再定義する必要がある 👉 再定義することをオーバーライドという
}

class 抽象クラス名 extends クラス名//サブクラス
{
  プロパティ
  メソッド
  parent::メソッド名//スーパークラスのメソッドを呼び出せる
}

オーバーライド・・・スーパークラスと同じ引数/戻り値で同じ名前のメソッドをサブクラスに定義
👉 メソッドにfinelとつけてオーバーライドさせないようにできる
オーバーロード・・・スーパークラスと違う引数/戻り値で同じ名前のメソッドをサブクラスに定義
👉 オーバーロードはPHPで許可されていないが、コンストラクタのみ例外としてオーバーロードを実装できる

トレイト

👉 依存関係を生みやすい

trait トレイト名
{
  メソッド
}

class クラス名
{
  use トレイト名
}

インターフェース

👉 依存関係を生みにくい

interface インターフェース名
{
  抽象メソッド
}

class クラス名 implements インターフェース名
{
  抽象メソッドの実装
}
GitHubで編集を提案

Discussion