PHP에서는 뮤테이터(mutator) 메서드를 활용해 메서드를 연결하는 메서드 체이닝(Method Chaining)을 구현할 수 있습니다. 핵심 원리는 각 메서드가 원본 객체 자신($this)을 반환하도록 만드는 것입니다. 이렇게 하면 반환된 객체에 대해 다른 메서드를 계속해서 호출할 수 있어, 하나의 문장으로 여러 작업을 순차적으로 처리할 수 있습니다.
예제 코드
다음은 메서드 체이닝을 보여주는 간단한 예제입니다.
<?php
class sample_class {
private $str;
function __construct() {
$this->str = "";
}
function addA() {
$this->str .= "am";
return $this;
}
function addB() {
$this->str .= "_bn";
return $this;
}
function getStr() {
return $this->str;
}
}
$new_object = new sample_class();
echo $new_object->addA()->addB()->getStr();실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
am_bn
동작 원리 설명
코드가 동작하는 방식을 단계별로 살펴보면 다음과 같습니다.
addA() 메서드는 문자열에 "am"을 추가한 후 return $this;를 통해 객체 자신을 반환합니다. 이어서 addB() 메서드가 호출되어 문자열에 "_bn"을 추가하고 마찬가지로 객체 자신을 반환합니다. 마지막으로 getStr() 메서드가 호출되어 누적된 최종 문자열인 am_bn을 반환합니다.
이처럼 메서드 체이닝을 활용하면 코드가 간결해지고 가독성이 크게 향상되며, 여러 단계의 작업을 직관적인 흐름으로 표현할 수 있다는 장점이 있습니다.