如何在 php 中从静态函数内部为公共变量赋值


How can I assign a value to public variable from inside static function in 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()
?>

你不能。 为什么不verify成员函数并像

$user->verify();

另一种选择是将用户传递到验证函数中,如下所示:

public static function verify( $user ) {
   $user->first_name = 'firstname';
   $user->last_name = 'last_name';
}

并像这样打电话:

User::verify($user)

你真的不能...其他则使用单例模式,这反而破坏了静态函数的重点。

基本思想是,静态函数不需要实例,但您尝试执行的操作需要。
我建议在非静态 setter 函数或构造函数中验证数据。或者,如果需要,请添加非静态的公共方法验证。
想想看:静态不需要实例,所以如果没有实例(因此没有" $this"),你在验证什么。