我们什么时候在PHP函数中返回值?

时间:2016-09-07 13:41:00

标签: php oop

对不起这个问题,但我不明白这是怎么回事:

class Person {
    public static $age = 1;

    public function haveBirthday() {
        static::$age +=1;
    }
}

$joe = new Person;
$joe->haveBirthday();

echo Person::$age;

我不理解的是:

public function haveBirthday() {
    static::$age +=1;
}

不应该返回 $ age,否则价值会丢失?为什么它仍然有效?

谢谢!

3 个答案:

答案 0 :(得分:1)

您已将其定义为static,这意味着它们是class level个变量而非实例级别。

因此,当您致电$joe->haveBirthday();时,它会更新class level类的Person变量,该变量可以使用Person::$age;进行访问。

不需要返回静态变量,您可以直接从Class访问它。

答案 1 :(得分:0)

public static $age = 1;表明这是一个静态属性,这意味着它是一个类属性,而不是一个实例。

答案 2 :(得分:0)

方法haveBirthday()不会返回任何内容,只会增加静态变量$age

静态变量由此类的所有实例共享。因此,在您的情况下,这不是一个好主意,因为所有人都将拥有相同的年龄。

class Person {
    public static $age = 1;

    public function haveBirthday() {
        static::$age +=1;
    }
}

$joe = new Person;
$jane = new Person;
$joe->haveBirthday();   // +1 => 2
$jane->haveBirthday();   // +1 => 3

echo Person::$age;  // Will return 3

测试here