[英]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.