PHP类函数无法设置属性求助:简化代码调试仍无效
问题分析与修正方案
我仔细看了你的代码,发现几个关键错误导致你无法正确设置类属性,咱们一步步来解决:
核心错误点
- 错误1:方法内误用未定义变量
你的setAverageWeather方法里创建了一个未定义的$averageWeather变量,还试图给它赋值,但这个变量和当前类的实例毫无关系,而且你的类里根本没有$averageWeather这个属性。 - 错误2:get/set方法指向错误属性
类的属性是$maxtemperatureforecast,但你的getAverageWeather方法返回的是$this->averageWeather(一个不存在的属性),set方法也没有正确操作目标属性。 - 错误3:未调用set方法
你创建了类实例后,完全没调用setAverageWeather方法,所以属性一直保持默认的null值。
修正后的完整代码
类文件(averageweather_class.php)
<?php class averageWeather { // 类的目标属性 public $maxtemperatureforecast; // 修改set方法:接收参数并正确赋值给目标属性 public function setAverageWeather($temperature) { $this->maxtemperatureforecast = $temperature; } // 修改get方法:返回正确的类属性 public function getAverageWeather() { return $this->maxtemperatureforecast; } }
调用代码
<?php include '\classes\averageweather_class.php'; $dailyforecast = new averageWeather(); // 必须调用set方法才能设置属性值 $dailyforecast->setAverageWeather('7'); // 现在查看属性值 var_dump($dailyforecast); // 也可以通过get方法获取值 var_dump($dailyforecast->getAverageWeather());
关键知识点说明
- 在类的方法内部,必须用
$this来指代当前类的实例,所以操作属性的正确写法是$this->属性名。 - set方法建议设计为接收参数,这样可以灵活设置不同的属性值,而不是把值硬编码在方法里。
- 类实例创建后,属性默认是
null,必须主动调用set方法(或者直接赋值,不过用get/set更符合OOP规范)才能改变属性值。
内容的提问来源于stack exchange,提问作者Amy
相关产品推荐
相关产品推荐

