PHP 객체 지향 프로그래밍에서 객체 생성 직후 메서드 호출
숫자 배열을 저장하고 메서드 getSum를 통해 이 숫자들의 합계를 계산할 수 있는 클래스 Arr가 있다고 가정해 봅시다.
숫자들은 객체 생성자에 배열 형태로 전달되며, 메서드 add를 사용하여 하나씩 추가할 수도 있습니다.
<?php
class Arr
{
private $numbers = [];
public function __construct($numbers)
{
$this->numbers = $numbers;
}
public function add($number)
{
$this->numbers[] = $number;
}
public function getSum()
{
return array_sum($this->numbers);
}
}
?>
다음은 클래스 Arr의 사용 예시입니다.
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // 15를 출력합니다
?>
필요한 모든 숫자를 객체 생성 시점에 전달한 후 즉시 그 합계를 구하고 싶을 수 있습니다.
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // 6을 출력합니다
?>
객체에 대한 추가적인 조작을 더 이상 계획하지 않는다면, 위 코드를 더 간결하게 다시 작성할 수 있습니다: 객체를 생성하고 즉시 해당 메서드 getSum를 호출할 수 있습니다.
<?php
echo (new Arr([1, 2, 3]))->getSum(); // 6을 출력합니다
?>
<?php
class StringProcessor
{
private $str = '';
public function __construct($text)
{
$this->str = $text;
}
public function append($text)
{
$this->str .= $text;
return $this;
}
public function getValue()
{
return $this->str;
}
public function getLength()
{
return strlen($this->str);
}
}
?>
이 클래스를 다음과 같이 사용했다고 가정해 봅시다.
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
이 코드를 즉시 클래스 호출 방식으로 다시 작성해 보세요.