⊗ppOpMgTS 87 of 107 menu

Magic Method toString in OOP in PHP

The first magic method we will study is called __toString. It is called when attempting to convert a class instance to a string. Let's figure out what this means. Suppose we have the following class User:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Let's create an object of this class:

<?php $user = new User('john', 25); ?>

Now let's try to output the created object via echo:

<?php $user = new User('john', 25); echo $user; ?>

Attempting to output an object via echo is a conversion to a string. In this case, PHP will throw an error because objects cannot be converted to a string just like that.

To remove the error, we must explicitly tell PHP what to do when attempting to convert an object to a string. This is what the magic method __toString exists for.

If we create such a method in our class code, then the result of this method (i.e., what it returns via return) will be the string representation of the object.

Suppose we want the user's name to be displayed when trying to output the object via echo. So let's create the method __toString and return the value of the name property in it:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } // Implement the specified method: public function __toString() { return $this->name; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Let's test:

<?php $user = new User('john', 25); echo $user; // will output 'john' - it works! ?>

Create a class User, in which there will be properties name and surn. Make it so that when outputting the object via echo to the screen, a string with the user's first and last name is displayed.

byenru