Gọi phương thức ngay sau khi tạo đối tượng trong OOP PHP
Giả sử chúng ta có lớp Arr, lớp này
lưu trữ một mảng số và có thể tính toán
tổng của các số này bằng phương thức getSum.
Các số được truyền vào dưới dạng mảng trong hàm tạo
đối tượng, và cũng có thể được thêm từng số một
bằng phương thức 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);
}
}
?>
Đây là ví dụ về cách sử dụng lớp Arr:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // sẽ xuất ra 15
?>
Có thể xảy ra trường hợp tất cả các số cần thiết chúng ta truyền vào tại thời điểm tạo đối tượng, sau đó ngay lập tức muốn tìm tổng của chúng:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // sẽ xuất ra 6
?>
Nếu chúng ta không có kế hoạch thực hiện bất kỳ
thao tác nào khác với đối tượng, thì đoạn mã trên có thể
được viết ngắn gọn hơn: có thể tạo đối tượng và
ngay lập tức gọi phương thức getSum của nó:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // sẽ xuất ra 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);
}
}
?>
Giả sử lớp này được sử dụng theo cách sau:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Hãy viết lại đoạn mã này thông qua việc gọi lớp ngay tại chỗ.