2013-11-21 2 views
1

Я пытаюсь узнать, как работают классы, и я нашел проблему. Как передать переменную из функции в другую функцию в том же классе? Я попытался использовать возврат, но он не сработал.Возвращаемое значение класса для другой функции в том же классе

Вот простой класс похож с моей проблемой:

class a 
{ 

    function one() 
    { 

     $var = 5; 
     return $var; 

    } 

    function two() 
    { 

     $this->one(); 

     if($var == 5){ 

      echo "It works."; 

     } 

    } 

} 

Я просто написал, что прямо здесь, так что если есть какая-либо ошибка невнимательность просто игнорировать его. Итак, как мне это достичь?

Заранее благодарен! :)

P.S Извините, если этот вопрос уже задан, Im очень плохо при поиске.

+0

Вы можете болтаться в методе функций какое-то время, пока вы не поймете, как они «разделяют переменные», или, по сути, как они этого не делают. – aspyct

+1

Ваш метод 'one' фактически возвращает значение, но его не получить. Вам нужно либо сохранить результат в переменной члена класса, либо в локальной переменной внутри метода 'two'. – brezanac

ответ

7

Вы так близко. Вам просто нужно, чтобы захватить возвращаемое значение из a::one() использовать в a::two():

function two(){ 
    $var = $this->one(); 
    if($var == 5){ 
     echo "It works."; 
    } 
} 

Альтернативный способ заключается в использовании переменных-членов в классе:

class a { 
    private $var; 

    function one(){ 
     $this->var = 5; 
    } 

    function two(){ 
     $this->one(); 
     if($this->var == 5){ 
      echo "It works."; 
     } 
    } 
} 
+0

Ха! Большое спасибо за большой и быстрый ответ! Ура! Я помечаю его как решение, как только таймер погаснет. :) У меня отличный день – Jacob

+0

Видел свое редактирование, какое вы порекомендовали? Какой из них лучше всего в какой среде? – Jacob

+0

Оба они будут хорошо работать для вас. Я говорю вариант использования 1. Когда вы получите больше опыта, вы увидите, когда использовать вариант 2. –

Смежные вопросы