Свойство set дает значение в одном методе, но в другом методе говорит NULL

0

Я пытаюсь установить свойство и иметь его в нескольких классах. Я устанавливаю свойство и повторяю его из метода, в котором он установлен, и дает заданное значение, но когда я использую 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();
  • 0
    Какие методы вы используете?
  • 0
    То, что вы видите, это весь код, который я пытаюсь запустить в одном файле php.
Теги:

2 ответа

1
Лучший ответ

Вы устанавливаете "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();
1

Вы не добавляли свой вывод, но я предполагаю, что он выглядит примерно так: BLAHNULL

Переменная $failed fail является переменной экземпляра. Это различно для каждого "Процесса", который вы делаете.

Когда вы вызываете showFailed, он создает геокод, который, в свою очередь, создает новый процесс. Затем этот процесс перекликается BLAH статусом BLAH после его установки. Как только этот адрес geoCodeAddress завершается, выдается сообщение об ошибке состояния исходного внешнего процесса, которое равно null.

  • 0
    Вы правы на выходе быть BLAHNULL

Ещё вопросы

Сообщество Overcoder
Наверх
Меню