PHP: Определение строкового представления объекта
Задача
Требуется управлять представлением объекта при его выводе из PHP.
Решение
Реализация метода __toString():
class Person {
// Остальной код класса
public function toString() {
return "$this->name <$this->email>";
}
Комментарий
PHP предоставляет объектам возможность управлять процессом их преобразования в строковую форму. Это позволяет вывести представление объекта удобным способом, без большого объема дополнительного кода.
При выполнении команды echo или print для отдельного объекта PHP вызывает метод __toString () этого объекта.
Пример:
class Person {
protected $name; protected $email;
public function setName($name) {
$this->name = $name;
}
public function setEmail($email) {
$this->email = $email;
}
public function __toString() {
return "$this->name <$this->email>";
}
}
После этого представление объекта выводится следующим образом:
$rasmus = new Person;
$rasmus->setName('Rasmus Lerdorf');
$rasmus->setEmail('rasmus@php.net'); print $rasmus;
Rasmus Lerdorf
При вызове print PHP автоматически вызывает метод __toString() и возвращает строковое представление объекта.
Метод должен возвращать строку; в противном случае PHP выдаст сообщение об ошибке. Хотя это кажется очевидным, иногда разработчиков подводит механизм автоматического преобразования типа, который здесь не работает.
Например, с точки зрения разработчика, строка ‘9’ часто считается эквивалентом целого числа 9, потому что PHP обычно переключается между ними в зависимости от контекста и почти всегда с правильным результатом.
Однако функция __toString() не может возвращать целые числа. Если вы подозреваете, что метод может вернуть нестроковое значение, рассмотрите возможность явного преобразования типа результата:
class TextInput {
// Остальной код класса
public function __toString() {
return (string) $this->label;
}
}
Преобразуя $this->label в string, вы можете не беспокоиться о том, что кто-то может снабдить текстовое поле числовой меткой.
До выхода PHP 5.2 функциональность __toString() обладала рядом ограничений.
Следовательно, если вы часто используете __toString() в своем коде, лучше
работать с PHP 5.2 и выше.
Написать комментарий
RCE.SU рекомендует!
Поделиться
Свежие записи
- Видеокурсы по JAVA
- Наша компания займется созданием самого лучшего проекта – лендинг пейдж
- Как создать галерею Pixabay в Joomla
- Мы предлагаем создание сайтов с уникальной структурой и функционалом, разработанных под конкретные задачи клиента!
- Сайты для покупки-продажи недвижимости
- Enext.ua – копания по производству электротехнического оборудования
- Преимущества продвижения сайта в поисковых системах
- Анализ ключевых слов на новом уровне
- JOOMLA? Это как раз то, что вам было нужно!