类的方法中未定义的变量-PHP
我想知道为什么我下面的代码不起作用。它给了我这个错误: (!)注意:未定义变量:第8行的C:\wamp\www\oops\visibility levels\public.php中的uname类的方法中未定义的变量-PHP,php,Php,我想知道为什么我下面的代码不起作用。它给了我这个错误: (!)注意:未定义变量:第8行的C:\wamp\www\oops\visibility levels\public.php中的uname 但是当我将上面的代码修改为- <?php class User { public $uname; public function setUsername($uname) { $this->uname = $uname; } pub
但是当我将上面的代码修改为-
<?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。有什么想法吗?变量
$uname
在setUsername函数作用域中未定义。使用$this->uname
访问类变量或将$uname作为参数(函数中将包含本地$uname
变量)。在setUsername
函数中,从未定义变量$uname
。您正在尝试将class属性$this->uname
设置为未初始化的变量
在工作代码中,$uname
变量在参数传递给函数时初始化。公共函数setUsername()//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();
?>
因为函数setUserName不知道变量$uname的值,所以需要在范围内定义它,或者通过函数参数传递
例如:
public function setUsername()
{
$uname = 'foo';
$this->uname = $uname;
}
将产生输出:foo谢谢。我现在明白了。
public function setUsername()
{
$uname = 'foo';
$this->uname = $uname;
}