get_called_class--后期静态绑定("Late Static Binding")类的名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了get_called_class--后期静态绑定("Late Static Binding")类的名称相关的知识,希望对你有一定的参考价值。

get_called_class--后期静态绑定("Late Static Binding")类的名称

string get_called_class ( void )

获取静态方法调用的类名。

返回类的名称,如果不是在类中调用则返回 FALSE

<?php 
class Person{
    public $username;
    public $age;
    public $height;
    public $weight;
    static public $number = 0;
    
    public function __construct($username,$age,$height,$weight){
        $this->username = $username;
        $this->age = $age;
        $this->height = $height;
        $this->weight = $weight;
        self::$number++;
    }
    public function __set($name,$value){
        $this->$name = $value;
    }
    
    public function __get($name){
        return $this->$name;
    }
    /**
     * 1)static方法中不能直接使用非静态成员,因为非静态成员与实例相关,通过实例化间接使用
     * 2)static方法中不能用this(与实例相关)
     * 3)非static方法中可以使用static成员
     
*/
    static public function getUsernumber(){
        var_dump(get_called_class());
        return self::$number;
    }
    
    public function getUsername(){
        var_dump(get_called_class());
        return $this->username;
    }
    
    public function __toString(){
        return ‘‘;
    }
}
$p_person1 = new Person(‘zhaofei‘,23,185,62);
echo $p_person1->getUsername();
$p_person2 = new Person(‘zhaofei1‘,24,165,68);
$p_person3 = new Person(‘zhaofei2‘,23,180,82);
$p_person4 = new Person(‘zhaofei3‘,22,175,72);
echo Person::getUsernumber();

?> 

以上是关于get_called_class--后期静态绑定("Late Static Binding")类的名称的主要内容,如果未能解决你的问题,请参考以下文章

php get_called_class()函数与get_class函数的区别

PHP面向对象-后期静态绑定

后期静态绑定在PHP中的使用

后期静态绑定在PHP中的使用

PHP 5.2 等效于后期静态绑定(新静态)?

PHP 后期静态绑定问题