Wenn ein Objekt als String verwendet wird, wird es diese Methode verwenden wird automatisch aufgerufen, und in dieser Methode kann eine bestimmte Zeichenfolge zurückgegeben werden, um das Ergebnis der Konvertierung des Objekts in eine Zeichenfolge anzuzeigen. Diese magische Methode ist relativ verbreitet.
Hinweis: Wenn diese Methode nicht definiert ist, kann das Objekt nicht als String verwendet werden! Beispiele für undefinierte tostring()-Methoden in
<?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; //+为加法运算符,会报错?>
Die drei Fehlerinhalte sind
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(),不会报错?>
Laufergebnis
姓名:张三年龄:15,性别:男
Diese Methode wird automatisch aufgerufen, wenn das Objekt als Funktion verwendet wird. Dies wird grundsätzlich nicht empfohlen.
class A{ function invoke(){ echo "<br />我是一个对象呀,你别把我当作一个函数来调用啊!"; } }$obj = new A();$obj(); //此时就会调用类中的方法:invoke()
Das obige ist der detaillierte Inhalt vonPHP-objektorientierte, detaillierte Codebeispiele für __tostring() und __invoke(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!