3

我试过$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()

?>
4

2 回答 2

7

你不能。为什么不创建verify一个成员函数并像这样调用它

$user->verify();

另一种选择是将用户传递给验证功能,如下所示:

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

并像这样调用:

User::verify($user)
于 2012-06-05T20:42:29.873 回答
4

你真的不能......除了使用单例模式之外,这反而破坏了静态函数的意义。

基本思想是静态函数不需要实例,但你想要做的事情。
我建议在非静态 setter 函数或构造函数中验证数据。或者,如果需要,添加一个非静态的公共方法验证。
想一想:静态不需要实例,那么您在验证什么,如果没有实例(因此没有“ $this”)。

于 2012-06-05T20:45:01.857 回答