php面向对象相关技术总结

2019-04-01  本文已影响0人  宠辱不惊丶岁月静好

php内置标准类

其它数据类型转对象

对象转字符串

__toString()方法用于一个类被当做字符串时应怎样回应。

例如 echo $obj;应该显示什么。此方法必须返回一个字符串,否则将发出一个致命错误。

小案例:

// 当 echo 对象名; 返回该类的相关信息,比如类名,所有函数和所有属性
class Dog
{
    public $name;
    protected $age;
    private $lover;
    public function __construct($name, $age, $lover)
    {
        $this->name = $name;
        $this->age = $age;
        $this->lover = $lover;
    }
    protected function cry()
    {
        echo '汪汪叫';
    }
    // 魔术方法
    public function __toString()
    {
        // 使用反射类来实现
        $reflect_class = new ReflectionClass($this);
        echo '<br>类名 = ' . $reflect_class->getName();
        
        echo '<br>类的方法有:';
        $method_list = $reflect_class->getMethods();
        print_r($method_list);// 打印出对象数组
        // Array ( [0] => ReflectionMethod Object ( [name] => __construct [class] => Dog ) [1] => ReflectionMethod Object ( [name] => cry [class] => Dog ) [2] => ReflectionMethod Object ( [name] => __toString [class] => Dog ) ) 
        
        echo '<br>类的属性有:';
        $property_list = $reflect_class->getProperties();
        print_r($property_list);// 打印出对象数组
        // Array ( [0] => ReflectionProperty Object ( [name] => name [class] => Dog ) [1] => ReflectionProperty Object ( [name] => age [class] => Dog ) [2] => ReflectionProperty Object ( [name] => lover [class] => Dog ) )
        
        // 如果取出 大黄狗
        echo '<br>' . $property_list[0]->getValue($this);
        return '';
    }
}
$dog = new Dog('大黄狗', 45, '小花狗');
// 需要输出 Dog 类的相关信息
echo $dog;

trait

上一篇下一篇

猜你喜欢

热点阅读