PHPで型宣言(タイプヒンティング)にクラスを使った時の挙動

PHPで型宣言(タイプヒンティング)にクラスを使った時の挙動

151 回閲覧されました

みなさんこんにちは、jonioです。

今回はPHPの型宣言にクラスを使った時のメモになります。

引数はインスタンスになる

まずは通常のクラスです。

<?php
    class Demo {
    
        public $name;
        
        public function method() {
          $this->name = "デモです";
        }
    }
    
    $instance = new Demo();

7行目ですがメソッドの中でプロパティを使う時はインスタンスを$thisで書かないといけないルールがあります。

この$thisですがメソッドの引数に「クラス名 変数」と記述した時は扱いが変わります。

例えば下記のコードを書いたとします。

<?php
  class Demo {
    public $article;
    
    public function setArticle(Article $article){
      $this->article = $article;
    }
  }

「Article $article」の$articleはArticleクラスのインスタンスの扱いになり6行目でプロパティ($this->article)に$articleを代入していますがインスタンスをプロパティとして使うことができるようになります。

例えば下記の使い方をします。

<?php
class QueryArticle{
  public $article;
  
  public function setArticle(Article $article){
    $this->article = $article;
  }

  public function save(){
    $title = $this->article->getTitle();
    $body = $this->article->getBody();   
  }
}