2016-09-07 1 views
1

Извините за вопрос, но я не понимаю, как это работает:Когда мы возвращаем значения в функциях PHP?

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; 
} 

Не предполагается возвращение $ возраста в противном случае значение теряется? Почему он все еще работает?

Спасибо!

+1

статическое среднее, созданное один раз и доступ к которому можно получить с именем класса, так что теперь вы можете думать о возрасте, созданном один раз и, следовательно, значение –

ответ

1

Вы определили его как static, что означает, что это переменные class level вместо уровня экземпляра.

Так что, когда вы звоните $joe->haveBirthday(); он обновляет class level переменную Person класса, который можно получить с помощью Person::$age;.

Статические переменные не нужно возвращать, вы можете получить к нему доступ непосредственно из класса.

+0

Это было полезно. Благодаря! –

0

public static $age = 1; предполагает, что это статическое свойство, что означает это как свойство класса, а не экземпляр.

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.

+0

Благодарим за информацию! –

+0

@ Jmoon.C Upvote, если это помогает :) –

Смежные вопросы