#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
- 619 reads
mariyas
Fri, 09/15/2023 - 10:23
Permalink
добавлено: "Представление
добавлено: "Представление объекта в виде строки"