PHP类构造函数初始化后属性为空,为何无法正常工作?
问题根源:构造函数命名错误
嘿,这问题其实挺常见的——你把PHP构造函数的名字写错啦!
在PHP里,类的构造函数必须是两个下划线开头的__construct(),但你写的是_construct()(只有一个下划线)。这就导致PHP根本不把这个方法当成构造函数来执行,当你实例化Zip类的时候,$this->root完全没被赋值,自然就是null,调用print()方法时当然没输出啦。
修正后的代码
只需要把构造函数的名称改成正确的写法就行:
class Zip { private $root; // 这里改成两个下划线的__construct public function __construct() { $this->root = dirname(__DIR__); } public function print(){ echo $this->root; } }
额外小建议
还有个细节要提醒你:print是PHP的保留关键字,虽然现在用它当方法名不会直接报错,但为了代码更规范、避免潜在问题,建议把方法名改成printRoot()这类非保留字,比如:
public function printRoot(){ echo $this->root; }
这样用起来会更稳妥哦~
内容的提问来源于stack exchange,提问作者user561787
相关产品推荐
相关产品推荐

