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

PHP扩展类属性赋值异常:Comun类departamento始终为NULL

问题修复:Comun类departamento属性始终为NULL的解决办法

嘿,我一眼就发现问题所在啦——都是拼写错误和方法调用方式不对搞的鬼!咱们挨个来修正:

错误1:构造函数名称拼写错误

PHP的构造函数魔术方法是严格的__construct(注意最后有个t),但你在Comun类里写成了__construc,少了一个字母!这种情况下,当你实例化Comun对象时,PHP会自动使用默认的空构造函数,而不会执行你写的那段构造逻辑,这就导致父类的构造没被调用,departamento也完全没被赋值。

错误2:调用父类构造时同样拼写错误

你在Comun类的构造里调用parent::__construc($row),这里同样少了t,应该改成parent::__construct($row)才能正确触发父类的构造逻辑。

错误3:成员方法调用方式错误

你写的setDepartamento($row['departamento'])是在尝试调用全局函数,但setDepartamento是Comun类的成员方法,必须用$this->来调用它;其实更直接的方式是直接给属性赋值,省得绕个setter的弯。


修正后的Comun类代码

<?php 
class Comun extends Modulo { 
    private $departamento; 

    public function __construct($row) { 
        // 正确调用父类构造
        parent::__construct($row); 
        // 直接赋值,或者用下面的setter方法二选一
        $this->departamento = $row['departamento']; 
        // $this->setDepartamento($row['departamento']);
    } 

    public function setDepartamento($departamento) { 
        $this->departamento = $departamento; 
    } 

    // 建议新增getter方法,方便后续获取departamento值
    public function getDepartamento() {
        return $this->departamento;
    }
}

为什么之前显示NULL?

因为构造函数名称拼写错误,PHP没有执行你写的构造逻辑:既没调用父类的构造初始化那些继承来的属性,也没给departamento赋值,所以var_dump的时候这个属性自然是NULL。

修正之后,你再实例化Comun对象,departamento就能正确获取到表单提交的值啦!

内容的提问来源于stack exchange,提问作者Nacho Diaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:40:05