这种明显矛盾的解释是什么?
使用isset变量$ city ='';返回'true'。
但是我必须在以下代码中使用if语句来避免未定义的错误:
class Holiday {
public $city = '';
public function __construct() {
if (isset($city)) {
$this->city = $city;
}
}
public function get_city() {
return $this->city;
}
public function set_city($city) {
return $this->city = $city;
}
}
$germany = new Holiday;
$germany->set_city('Berlin');
function travel($a) {
echo "Visit " . $a->get_city();
}
我搜索了'is set'和undefined之间的解释但找不到。我真的很感激任何见解。
答案 0 :(得分:0)
您在构造函数中没有$ city变量,这就是您收到该错误的原因。
答案 1 :(得分:0)
这是一个“可变范围”问题。
在__construct
内,未设置本地变量$city
。
你必须通过参数传递它:
public function __construct( $city )
或者根据您的目标将其声明为全球:
public function __construct()
{
global $city;
但我认为你正在寻找第一个解决方案。