#7. 3 php Создание объекта. Представление объекта в виде строки (перегрузка преобразования объекта в строку)
Primary tabs
В предыдущем разделе был создан класс Animal, но для того, чтобы его использовать, следует вначале создать объект данного класса. Обычные переменные в зависимости от своего содержимого имеют определенный тип данных. Класс также является типом данных, и объект класса может быть сохранен в переменной.
Создание объекта
Для создания нового объекта созданного класса используется оператор new. Этот оператор требуется только при создании объектов, а не для обычных скалярных типов данных. Например, для создания объекта класса Animal и сохранения ссылки на него в переменной $lion используется следующий синтаксис (класс Animal описан в предыдущем разделе):
$lion = new Animal;
После создания объекта доступ к его методам обеспечивает оператор ->. Например, для присвоения имени может использоваться метод set_name:
$lion->set_name("Бонифаций")
Для того, чтобы считать присвоенное имя, используется метод get_name, как показано ниже:
echo "Имя нового льва: ", $lion->get_name(), "."
В результате выполнения этого фрагмента будет отображена строка:
Имя нового льва: Бонифаций.
Оператор -> открывает доступ как к методам класса, так и к его свойствам. Хорошим тоном в ООП является присвоение значений свойствам класса при помощи соответствующих методов, в этом случае в зависимости от конкретных данных могут быть осуществлены дополнительные действия. Такие методы называются методами доступа. Например, следующий метод ограничивает длину имени животного 10 символами:
public function set_name($text)
{
if (strlen($text) <= 10) {
$this->name = $text;
}
}Представление объекта в виде строки
Мы описали класс Animal и создали объект данного класса $lion. При попытке вывести объект на экран:
echo $lion;
получаем сообщение о невозможности преобразования объекта $lion в строку:
Fatal error: Uncaught Error: Object of class Animal could not be converted to string
В PHP имеется возможность перегрузки преобразования в строку для объектов. Для этого в классе Animal мы должны описать специальный метод __toString, который будет вызван каждый раз, когда будет затребовано неявное преобразование ссылки на объект в строку:
class Animal
{
private $name;
public function set_name($text)
{
$this->name = $text;
}
public function get_name()
{
return $this->name;
}
public function __toString()
{
return $this->name;
}
}
Теперь в результате выполнения кода
$lion = new Animal;
$lion->set_name('Бонифаций');
echo "Это животное зовут $lion";
получим строку:
Это животное зовут Бонифаций
- Log in to post comments
- 1062 reads
mariyas
Fri, 09/15/2023 - 10:23
Permalink
добавлено: "Представление
добавлено: "Представление объекта в виде строки"