Создание экземпляра контроллера CodeIgniter: когда это происходит? - PullRequest
0 голосов
/ 29 сентября 2018

Я хотел бы узнать подробности о том, когда происходит инстанцирование в CodeIgniter, в частности, о контроллерах.

Допустим, у меня есть контроллер с именем Main, который структурирован так:

class Main extends CI_Controller{

 public $variable;

 public function index(){

    $this->load->view('home/body');
    $this->variable="TEST";

 }

 public function run(){
     do something with $this->variable;
 }

}

Допустим, я вызываю браузер localhost / index.php / main , таким образом создавая экземпляр для первого основного контроллера Main .Его метод по умолчанию index () просто загружает html-страницу через load-> view () .

На этой странице есть кнопка, которая отправляет AJAX-запрос на тот же контроллер для использованияМетод run () , используя URL localhost / index.php / main / run .

На этом этапе будет $ переменная не определено?Другими словами, будет ли экземпляр класса Main повторно создан, или запрос AJAX будет использовать тот же экземпляр, созданный ранее?

1 Ответ

0 голосов
/ 30 сентября 2018

Я понимаю ваше замешательство.Часто с одноэлементным шаблоном в codeigniter кажется, что переменные будут существовать вечно.Это не так.

Загрузка AJAX на run() - это, по сути, отдельный запрос (воспринимайте его как обновление страницы).Любые переменные, ранее определенные в index() или только определенные в запросе для index(), будут недоступны.

У вас есть 3 варианта переноса переменных из одного вызова вследующее: сеансы, куки или база данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...