การเรียกใช้งานเมธอดทันทีหลังจากสร้างอ็อบเจ็กต์ใน OOP ใน PHP

สมมติว่าเรามีคลาส Arr ซึ่ง เก็บอาเรย์ของตัวเลขไว้และสามารถคำนวณ ผลรวมของตัวเลขเหล่านี้ด้วยเมธอด getSum ตัวเลขนั้นถูกส่งมาในรูปแบบอาเรย์ในคอนสตรัคเตอร์ ของอ็อบเจ็กต์ และยังสามารถเพิ่มทีละตัวได้ ด้วยเมธอด add:

php<?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<?php
  $arr = new Arr([1, 2, 3]);
  
  $arr->add(4);
  $arr->add(5);
  
  echo $arr->getSum(); // แสดงผล 15
?>

อาจเป็นไปได้ว่าตัวเลขทั้งหมดที่เราต้องการ เราจะส่งเข้าไปในตอนที่สร้างอ็อบเจ็กต์ จากนั้น ต้องการหาผลรวมของมันทันที:

php<?php
  $arr = new Arr([1, 2, 3]);
  echo $arr->getSum(); // แสดงผล 6
?>

ถ้าเราไม่打算ดำเนินการใดๆ เพิ่มเติม กับอ็อบเจ็กต์อีก โค้ดด้านบนสามารถ เขียนให้สั้นลงได้: เราสามารถสร้างอ็อบเจ็กต์และ เรียกใช้เมธอด getSum ของมันทันที:

php<?php
  echo (new Arr([1, 2, 3]))->getSum(); // แสดงผล 6
?>
Задание 1
php<?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<?php
  $str = new Str('aaa');
  $str->append('bbb');
  $str->append('ccc');
  
  echo $str->getLength();
?>

เขียนโค้ดนี้ใหม่โดยใช้การเรียกใช้งาน คลาสแบบทันที