Κλήση μεθόδου αμέσως μετά τη δημιουργία αντικειμένου στην αντικειμενοστρεφή προγραμματισμό στην PHP
Ας υποθέσουμε ότι έχουμε μια κλάση Arr, η οποία
αποθηκεύει έναν πίνακα αριθμών και μπορεί να υπολογίζει
το άθροισμα αυτών των αριθμών χρησιμοποιώντας τη μέθοδο getSum.
Οι ίδιοι οι αριθμοί περνάνε ως πίνακας στον κατασκευαστή
του αντικειμένου, και μπορούν επίσης να προστεθούν ένας-ένας
χρησιμοποιώντας τη μέθοδο 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();
?>
Ξαναγράψτε αυτόν τον κώδικα μέσω της κλήσης της κλάσης επί τόπου.