Как я могу присвоить значение публичной переменной из статической функции в php?
Я старался $this->
но не может присвоить значение $first_name and $last_name
переменная. Как убрать статическую функцию из функции и не вставить статическую функцию в переменные, как я могу эхо full_name()
? Вот код:
<?php
class User {
public $first_name;
public $last_name;
public function full_name() {
if(isset($this->first_name) && isset($this->last_name)) {
return $this->first_name . " " . $this->last_name;
} else {
return "No name!";
}
}
public static function verify() {
$this->first_name = "firstname";
$this->last_name = "last_name";
}
}
$user = new User();
User::verify();
echo $user->full_name()
?>
2 ответа
Вы не можете на самом деле... иначе, чем использовать шаблон синглтона, который скорее побеждает точку статической функции.
Основная идея состоит в том, что статическая функция не требует экземпляра, но то, что вы пытаетесь сделать, делает.
Я бы посоветовал проверить данные в нестатической функции-установщике или в конструкторе. Или, если необходимо, добавьте открытый метод проверки, который не является статическим.
Подумайте об этом: статика не нуждается в экземпляре, так что вы проверяете, если нет экземпляра (и, следовательно, нет "$this
").
Ты не можешь Почему бы не сделать verify
функция-член и вызвать ее как
$user->verify();
Другой альтернативой может быть передача пользователя в функцию проверки, например так:
public static function verify( $user ) {
$user->first_name = 'firstname';
$user->last_name = 'last_name';
}
и назови так:
User::verify($user)