簡體   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