Maison > développement back-end > tutoriel php > Exemples de code PHP détaillés orientés objet de __tostring() et __invoke()

Exemples de code PHP détaillés orientés objet de __tostring() et __invoke()

黄舟
Libérer: 2023-03-07 06:28:01
original
1876 Les gens l'ont consulté

tostring()Méthode magique

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(&#39;display_errors&#39;, 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(&#39;张三&#39;, 15, &#39;男&#39;);
echo $obj1;    //echo 后面为字符串,而对象不是字符串,会报错
$v1 = "abc" . $obj1;  //.为字符串连接符,会报错
$v2 = "abx" + $obj1;  //+为加法运算符,会报错?>
Copier après la connexion

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
Copier après la connexion

La méthode tostring() est définie dans la classe

<?php
ini_set(&#39;display_errors&#39;, 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(&#39;张三&#39;, 15, &#39;男&#39;);
echo $obj1;    //调用tostring(),不会报错?>
Copier après la connexion

Résultat d'exécution

姓名:张三年龄:15,性别:男
Copier après la connexion

invoke ( )Méthode magique

 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()
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal