繁体   English   中英

如何从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 ”),你在验证什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM