Maison > Article > développement back-end > Exemples de code PHP détaillés orientés objet de __tostring() et __invoke()
Lors de l'utilisation d'un objet comme chaîne, cette méthode sera est automatiquement appelé, et dans cette méthode, une certaine chaîne peut être renvoyée pour indiquer le résultat de la conversion de l'objet en chaîne. Cette méthode magique est relativement courante.
Remarque : Si cette méthode n'est pas définie, l'objet ne peut pas être utilisé comme chaîne ! Exemples de méthodes tostring() non définies dans les classes
<?php ini_set('display_errors', 1); class A{ public $name; public $age; public $sex; function construct($name, $age, $sex){ $this->name = $name; $this->age = $age; $this->sex = $sex; } } $obj1 = new A('张三', 15, '男'); echo $obj1; //echo 后面为字符串,而对象不是字符串,会报错 $v1 = "abc" . $obj1; //.为字符串连接符,会报错 $v2 = "abx" + $obj1; //+为加法运算符,会报错?>
Les trois contenus d'erreur sont
Catchable fatal error: Object of class A could not be converted to string Catchable fatal error: Object of class A could not be converted to string Notice: Object of class A could not be converted to int
<?php ini_set('display_errors', 1); class A{ public $name; public $age; public $sex; function construct($name, $age, $sex){ $this->name = $name; $this->age = $age; $this->sex = $sex; } function tostring(){ $str = "姓名:" . $this->name; $str .= "年龄:" . $this->age; $str .= ",性别:" . $this->sex; return $str; //这里可以返回“任何字符串内容” } } $obj1 = new A('张三', 15, '男'); echo $obj1; //调用tostring(),不会报错?>
Résultat d'exécution
姓名:张三年龄:15,性别:男
Cette méthode sera appelée automatiquement lorsque l'objet est utilisé comme fonction. Ceci n’est généralement pas recommandé.
class A{ function invoke(){ echo "<br />我是一个对象呀,你别把我当作一个函数来调用啊!"; } }$obj = new A();$obj(); //此时就会调用类中的方法:invoke()
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!