您的位置:首页 > 编程学习 > > 正文

php面向对象怎么调用属性(PHP面向对象程序设计__tostring和__invoke用法分析)

更多 时间:2022-03-28 01:19:45 类别:编程学习 浏览量:1637

php面向对象怎么调用属性

PHP面向对象程序设计__tostring和__invoke用法分析

本文实例讲述了PHP面向对象程序设计__tostring()和__invoke()用法。分享给大家供大家参考,具体如下:

__tostring()魔术方法

将一个对象当做一个字符串来使用时,会自动调用该方法,并且在该方法中,可以返回一定的字符串,以表明该对象转换为字符串之后的结果。该魔术方法比较常用。

注意:如果没有定义该方法,则对象无法当做字符串来使用!

类里面未定义__tostring()方法的例子

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • <?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; //+为加法运算符,会报错
  • ?>
  • 3个报错内容分别为

    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

    类里面定义__tostring()方法

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • <?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(),不会报错
  • ?>
  • 运行结果

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

    __invoke()魔术方法

    将对象当作函数来使用时,会自动调用该方法。通常不推荐这么做。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • class A{
  •   function __invoke(){
  •     echo "<br />我是一个对象呀,你别把我当作一个函数来调用啊!";
  •   }
  • }
  • $obj = new A();
  • $obj();  //此时就会调用类中的方法:__invoke()
  • 希望本文所述对大家PHP程序设计有所帮助。

    原文链接:https://blog.csdn.net/Yeoman92/article/details/52851906

    您可能感兴趣