Вытащить переменные из отдельной функции - PullRequest
0 голосов
/ 30 марта 2011

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

Представьте, что у меня есть что-то вроде этого:

class myCMS {

   public function process_apples() {

   $a = $_POST['$apples'];

   }

   public function display_apples() {

   echo $a;

   }
}

Как мне использовать display_apples(), чтобы сообщить о $ a от process_apples()?Я новичок в PHP, поэтому не стесняйтесь, дайте мне знать, если я нарушаю некоторые рекомендации по организации своего кода.

Ответы [ 3 ]

3 голосов
/ 30 марта 2011

Если у вас есть два метода в классе, и вы хотите, чтобы переменная была разделена между ними, вы должны использовать свойство класса - что-то вроде переменной, которая находится внутрикласс.


Ваш класс будет выглядеть так:

class myCMS {
    protected $a;   // declare the property (won't be visible from outside the class)

    public function process_apples() {
        $this->a = $_POST['$apples'];
    }

    public function display_apples() {
        echo $this->a;
    }
}


И пара замечаний:

  • Вам нужно использовать$this->property_name для доступа к свойству
  • Не связано, но вы, как правило, не должны использовать $_POST внутри своего класса: это делает ваш класс зависимым от внешних глобальных переменных - конечно, до васчтобы определить, является ли это проблемой или нет.
1 голос
/ 30 марта 2011

Поскольку вы используете класс, вы можете создать частную переменную класса, например:

class myCMS {
    private $a;

    public function process_apples() {
        $this->a = $_POST['$apples'];
    }

    public function display_apples() {
        echo $this->a;
    }
}
1 голос
/ 30 марта 2011

Вы бы имели:

class myCMS {

   private $a;

   public function process_apples() {

     $this->a = $_POST['$apples'];
     // process

   }

   public function display_apples() {

     echo $this->a;    
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...