Maison  >  Article  >  développement back-end  >  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()

黄舟
黄舟original
2017-03-27 10:06:401864parcourir

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;  //+为加法运算符,会报错?>

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

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(),不会报错?>

Résultat d'exécution

姓名:张三年龄:15,性别:男

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()

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!

Déclaration:
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