这种
明显的矛盾有什么解释?
使用 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();
}
我已经搜索了"已设置"和未定义之间的解释,但找不到。我真的很感激任何见解。
构造函数中没有 $city 变量,这就是您收到该错误的原因。
这是一个"可变范围"问题。
在__construct
内部,局部变量$city
没有设置。
你必须通过参数传递它:
public function __construct( $city )
或者根据您的目标将其声明为全局:
public function __construct()
{
global $city;
但我认为您正在寻找第一个解决方案。
- 阅读更多 关于 变量作用域