簡體   English   中英

類方法中的未定義變量-PHP

[英]Undefined variable in a method of a class - PHP

我想知道為什么我的以下代碼不起作用。 它給了我這個錯誤:

(!)注意:未定義的變量:第8行的C:\\ wamp \\ www \\ oops \\ visibility-levels \\ public.php中的uname

<?php
class User
{
    public $uname = "admin";

    public function setUsername()
    {
        $this->uname = $uname;
    }

    public function getUsername()
    {
        return $this->uname;
    }
}

$user = new User();
$user->setUsername();
echo $user->getUsername();
?>

但是當我將上面的代碼修改為-

<?php
class User
{
    public $uname;

    public function setUsername($uname)
    {
        $this->uname = $uname;
    }

    public function getUsername()
    {
        return $this->uname;
    }
}

$user = new User();
$user->setUsername("admin");
echo $user->getUsername();
?>

然后工作正常,並給我以下輸出-

管理

但是我不明白為什么我在第一段代碼中會得到不確定的變量uname。 任何想法?

因為函數setUserName不知道變量$ uname的值,所以您需要在范圍內定義它,或者通過函數參數傳遞。

例如:

public function setUsername()
{
    $uname = 'foo';

    $this->uname = $uname;
}

將導致輸出:foo

在setUsername函數作用域中未定義變量$uname 使用$this->uname訪問類變量或將$ uname用作參數(函數中將具有本地$uname變量)。

setUsername函數中,從未定義變量$uname 您正在嘗試將類屬性$this->uname設置為未初始化的變量。

在工作代碼中,將參數傳遞給函數時,將初始化$uname變量。

public function setUsername() // <-- missing $uname in args
{
    // $uname is like Javascripts Undefined here,
    $this->uname = $uname;
}

該錯誤正好源自= $uname; -它不存在,除非在參數列表中定義為參數。

如果需要第一個功能,請嘗試以下操作:

<?php
class User
{
    public $uname;

    public function __construct(){
        $this->uname = "admin";
    }

    public function setUsername($uname)
    {
        $this->uname = $uname;
    }

    public function getUsername()
    {
        return $this->uname;
    }
}

$user = new User();
$user->setUsername();
echo $user->getUsername();
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM