Как получить доступ к переменным из других методов внутри одного класса в PHP?

Я пробовал это, но не мог заставить его работать:

class Profile extends CI_Controller { public function index() { $foo = 'bar'; } public function form_submit() { echo $this->index()->foo; } } 

Я знаю, что могу сделать переменную доступной для всех методов в классе, объявив ее вне всех методов на уровне класса и объявив ее общедоступной. Но здесь мне нужно объявить переменную внутри одного из методов.

    Если вы объявляете его внутри метода, вам не повезло, если вы не вернете значение.

     class Profile { public function index() { $foo = 'bar'; return $foo; } public function form_submit() { echo $this->index(); } } 

    Возможно, лучшей альтернативой было бы объявить ее как переменную объекта (что вы называете «на уровне класса»), но объявите ее закрытой.

     class Profile { private $foo; public function index() { $this->foo = 'bar'; } public function form_submit() { echo $this->foo; } } 

    Нет! Ни в коем случае нельзя представить, что доступ к переменной в другом методе полезен или необходим.

    Класс представляет собой набор методов, которые работают в общем состоянии. Совместное состояние создается путем создания экземпляра объекта класса.

    Поскольку index() и form_submit() совместно используют состояние $foo , ваш код должен form_submit() следующим образом:

     class Profile extends CI_Controller { private $foo; public function index() { $this->foo = 'bar'; } public function form_submit() { echo $this->foo; } } 

    В некоторых ситуациях шаблон реестра может оказаться полезным. Но не в вашем случае.

    Кроме того, вы можете поднять $foo в глобальную область. Но так как это очень плохой стиль , я не хочу приводить пример кода. Сожалею.