Я пытаюсь установить свойство и иметь его в нескольких классах. Я устанавливаю свойство и повторяю его из метода, в котором он установлен, и дает заданное значение, но когда я использую 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
fail является переменной экземпляра. Это различно для каждого "Процесса", который вы делаете.
Когда вы вызываете showFailed, он создает геокод, который, в свою очередь, создает новый процесс. Затем этот процесс перекликается BLAH
статусом BLAH
после его установки. Как только этот адрес geoCodeAddress завершается, выдается сообщение об ошибке состояния исходного внешнего процесса, которое равно null.
BLAHNULL