You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:17:51