PHPのSetterメソッドで$thisを返す理由



 PHPでクラスの Setterメソッド を実装中に思ったのですが、PHPの Setterメソッド で戻り値に自分自身のオブジェクト($this)を返している実装を見かけました。私は Java 出身者です(実務経験は少ないです・・・)。これまでの経験上、特別な理由がない限り、Java で Setterメソッドに戻り値を指定することがありませんでした。なぜでしょうか?調べてみました。

調査項目

PHPのクラスでSetterメソッドに自分自身($this)を戻り値にする理由が知りたい。


調査結果

チェーンメソッドを使用するため。


サンプル

チェーンメソッドのサンプルです。

クラス
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class EmployeeBean {
 
    /**
     * 従業員コード
     * @var string
     */
    private $cdEmployee;
 
    /**
     * 従業員名称
     * @var string
     */
    private $nmEmployee;
 
    public function getCdEmployee() {
        return $this->cdEmployee;
    }
 
    public function setCdEmployee(string $cdEmployee) {
        $this->cdEmployee = $cdEmployee;
        return $this;   //どうして自分自身を返すの?
    }
 
    public function getNmEmployee() {
        return $this->nmEmployee;
    }
     
    public function setNmEmployee(string $nmEmployee) {
        $this->nmEmployee = $nmEmployee;
        return $this;   //どうして自分自身を返すの?
    }
 
}

チェーンメソッド
1
2
$emp = new EmployeeBean();
$emp->setCdEmployee('12E0001')->setNmEmployee('山田 太郎');


参考資料
php - Why to do return $this in setter methods? - Stack Overflow


以上

0 件のコメント:

コメントを投稿

最新

【PHP】スーパーグローバル変数 $_GET $_POST $_REQUEST

スーパーグローバル変数 $_REQUESTは、HTTPメソッドがGETとPOSTのいずれの場合もデータを取得することができる。 $_REQUEST['xxx'] $_GET['xxx'] $_POST['xxx'] ...