네, 가능합니다. PHP 5.4 버전부터는 객체를 인스턴스화하는 동시에 같은 줄에서 해당 객체의 메서드를 바로 호출할 수 있습니다. 이러한 방식은 별도의 변수에 객체를 저장하지 않고도 일회성 작업을 처리할 수 있어 코드가 더 간결해집니다.
기본 문법
객체는 클래스 멤버에 접근하는 방식으로 인스턴스화할 수 있습니다. 아래 스니펫과 같이 (new 클래스명) 형태로 객체를 생성한 뒤 화살표 연산자(->)로 메서드를 호출합니다.
(new my_var)->my_instance()
코드 설명 — 여기서 my_instance는 호출할 메서드이며, my_var는 인스턴스화할 객체(클래스)입니다.
예제
class Test_class {
public function __construct($param) {
$this->_var = $param;
}
public function my_method() {
return $this->_var * 2;
}
protected $_var;
}
function Test_class($param) {
return new Test_class($param);
}
$a = Test_class(10)->my_method();
var_dump($a);예제 설명
Test_class는 생성자에서 매개변수를 받아 내부 속성 $_var에 저장하고, my_method()는 이 값을 두 배로 곱해 반환합니다. 함수 Test_class()는 새 객체를 생성해 반환하는 래퍼(wrapper) 역할을 하며, 마지막 줄에서 객체 생성과 메서드 호출이 한 줄에서 동시에 이루어집니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
int(20)
매개변수로 전달한 10이 my_method()에 의해 두 배인 20으로 계산되어 정수형으로 출력된 것을 확인할 수 있습니다. 이처럼 PHP 5.4 이상에서는 객체 인스턴스화와 메서드 호출을 한 줄로 처리할 수 있어 코드의 가독성과 효율성을 높일 수 있습니다.