Maison >développement back-end >Problème PHP >A quoi sert la méthode php __toString()
"__toString()" est une méthode magique en PHP, qui est automatiquement appelée lors de la conversion d'un objet en chaîne. Elle est utilisée pour savoir comment une classe doit répondre lorsqu'elle est traitée comme une chaîne ; renvoie une chaîne, sinon une erreur fatale de niveau "E_RECOVERABLE_ERROR" sera émise.
L'environnement d'exploitation de ce tutoriel : système windows7, version PHP7.1, ordinateur DELL G3
__toString(), le la classe est traitée comme une méthode de réponse pour une chaîne
__toString() est une méthode magique en PHP qui est automatiquement appelée lors de la conversion d'un objet en chaîne.
Dans la programmation orientée objet, PHP fournit une série de méthodes magiques, qui offrent beaucoup de commodité pour la programmation et jouent un rôle très important en PHP. Les méthodes magiques en PHP commencent généralement par __ (deux traits de soulignement) et ne nécessitent pas d'appels explicites mais sont automatiquement appelées sous certaines conditions.
Fonction :
La méthode __toString() est utilisée pour déterminer la façon dont une classe doit répondre lorsqu'elle est traitée comme une chaîne. Par exemple, ce que « echo $obj; » devrait afficher.
Remarque :
Cette méthode doit renvoyer une chaîne, sinon une erreur fatale de niveau `E_RECOVERABLE_ERROR` sera émise.
Attention :
Impossible de lever des exceptions dans la méthode __toString(). Cela entraînerait une erreur fatale.
Code :
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } public function __toString() { return 'go go go'; } } $person = new Person('小明'); // 初始赋值 echo $person;
Résultat :
go go go
Alors, que se passe-t-il si la méthode magique __toString() s'exécute sans elle dans la classe ? Testons-le :
Code :
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } } $person = new Person('小明'); // 初始赋值 echo $person;
Résultat :
Catchable fatal error: Object of class Person could not be converted to string in D:\phpStudy\WWW\test\index.php on line 18 很明显,页面报了一个致命错误,这是语法所不允许的。
Informations détaillées : Les méthodes magiques en PHP sont présentées dans le tableau suivant :
魔术方法 | 作用 |
---|---|
__construct() | 实例化类时自动调用 |
__destruct() | 类对象使用结束时自动调用 |
__set() | 在给未定义的属性赋值时自动调用 |
__get() | 调用未定义的属性时自动调用 |
__isset() | 使用 isset() 或 empty() 函数时自动调用 |
__unset() | 使用 unset() 时自动调用 |
__sleep() | 使用 serialize 序列化时自动调用 |
__wakeup() | 使用 unserialize 反序列化时自动调用 |
__call() | 调用一个不存在的方法时自动调用 |
__callStatic() | 调用一个不存在的静态方法时自动调用 |
__toString() | 把对象转换成字符串时自动调用 |
__invoke() | 当尝试把对象当方法调用时自动调用 |
__set_state() | 当使用 var_export() 函数时自动调用,接受一个数组参数 |
__clone() | 当使用 clone 复制一个对象时自动调用 |
__debugInfo() | 使用 var_dump() 打印对象信息时自动调用 |
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!