Смущен потоком MVC, PHP - PullRequest
       4

Смущен потоком MVC, PHP

0 голосов
/ 22 сентября 2011

Я пытался узнать о MVC, но у меня есть несколько вопросов о потоке ввода в контроллер, а затем в модель.

  1. Скажем, пользователь заходит на example.com и попадает на свою домашнюю страницу. Затем они выбирают ссылку search.php. Как controller.php узнает, что пользователь запросил search.php вместо user.php?
  2. Когда controller.php узнает, что search.php был выбран, он загрузит модель, а затем view.php. Но при их вызове код будет выглядеть следующим образом.

    class Search extends Core_Search_Controller
    
    public function inboxSearch(){
      $this->view->navigation = $this->navigation();
      $this->load->box = $this->box();
    }
    

Нет представления папок или классов, а также папок для загрузки или классов для загрузки. И я могу найти функцию навигации в другом файле, но его папка находится в другом месте. Как он может получить доступ к этому файлу без включения или запроса?

  1. Once of search.php Откуда controller.php узнает, что search.php запросил информацию? Может быть, это излишне из вопроса номер один, но я совершенно запутался в этом.

Я знаю, это долго, извините за это.

* Редактировать: * Из того, что я узнал из проекта, в котором я нахожусь, есть то, что все функции в контроллере имеют действие, в конце которого они будут направлены к представлению с соответствующим название. такой как index.php / .tpl

 class IndexController extends Zend_Controller_Action{

    public function indexAction(){
    /**

    Somecode
    **/

    }

}

Приветствия

1 Ответ

0 голосов
/ 22 сентября 2011

Большинство MVC-фреймворков делают много закулисной магии для вас, и это, вероятно, то, что вы запутали в том, как все работает.

Чтобы ответить на ваш первый вопрос, большинство фреймворков используют файл .htaccess с правилом перезаписи, который перенаправляет весь трафик на ваш контроллер. Итак, когда вы запрашиваете search.php, он на самом деле вызывает контроллер, а не search.php. Оттуда контроллер может посмотреть на то, что вы изначально запрашивали (в данном случае search.php), чтобы выяснить подходящую модель и представление.

Я полагаю, что ответ на ваш второй вопрос заключается в том, что он автоматически загружает файлы по мере необходимости. Это еще одно волшебство, когда он может посмотреть на имя класса, выяснить местоположение файла и загрузить его. Вы можете прочитать больше об этом в руководстве по PHP. http://php.net/manual/en/language.oop5.autoload.php

Чтобы ответить на ваш последний вопрос, получение запрашиваемой информации часто обрабатывается контроллером, когда он просматривает запрос. Например, если вы запросите «example.com/blog/7263», он выяснит, что вам нужна модель «блога» и номер идентификатора 7263. В зависимости от того, какую платформу вы используете, способ ее настройки будет другим.

Надеюсь, это немного поможет.

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