Set 属性在一种方法中给出值,但在另一个方法中它说 NULL


Set property gives value in one method but in another method it says NULL

我正在尝试设置一个属性并使其在多个类中可用。我设置了属性并从设置它的方法回显它,它给出了设置的值,但是当我使用另一个方法的var_dump时,它说它是空的。谁能指出我做错了什么?输出BLAHNULL提前感谢

Class Process {
    public $failed;
    public function setFailed($failed) {
        $this->failed = $failed;
        echo $this->failed;
    }

    public function showFailed() {
        $geocode = new Geocode;
        $geocode->geoCodeAddress();
        var_dump($this->failed);
    }
}
Class Geocode {
    public function geoCodeAddress() {
        $process = new Process;
        $process->setFailed('BLAH');
    }
}
$test = new Process;
$test->showFailed();

您将"BLAH"设置为$process->失败,并尝试回显$test->失败。

$process与$test不是同一个实例。无论你对$process做什么,$test都无法访问它。

我不确定你想实现什么,但我认为你想要的是一个类扩展:

Class Process extends Geocode{
    public function showFailed() {
        $this->setFailed('BLAH');
    }
}
Class Geocode{
    public $failed;
    public function setFailed($failed) {
        $this->failed = $failed;
        echo $this->failed;
    }
}
$test = new Process;
$test->showFailed();

您没有附加输出,但我假设它看起来像这样: BLAHNULL

$failed变量是一个实例变量。您制作的每个"过程"都不同。

当您调用 showFailed 时,它会创建一个地理编码,进而创建一个新的进程。然后,该过程在设置后回显其BLAH状态。退出该地理代码地址后,将打印原始外部进程的失败状态,该状态为 null。