Как я могу присвоить значение публичной переменной из статической функции в 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)
Другие вопросы по тегам