помогите понять MVC PHP - PullRequest
       4

помогите понять MVC PHP

0 голосов
/ 01 августа 2010

хорошо, вчера я открыл тему о том, когда использовать mvc,

Сегодня я собираюсь узнать, как работают фреймворки MVC, и рассмотрю некоторые примеры, такие как CI, CAKE и т. Д.

  1. .htaccess, я нашел это

    RewriteEngine On RewriteCond% {REQUEST_FILENAME}! -D RewriteCond% {REQUEST_FILENAME}! -F RewriteRule ^ (. *) $ Index.php /? Url = $ 1 [QSA, L]

Хорошо, поэтому, когда мы набираем http://localhost/mymvc/something1/something2/something3/somethingetc

мы получили $_GET['url'] = строку «что-то1 / что-то2 / что-то3 / что-то еще» (длина = 45)

2.так я предполагаю что что-то1 будет классом, что-то2 должно быть функцией, а что-то3 я не совсем уверен, как именно фреймворк загружает класс?, Функции?

class Blog extends Controller {

    function index()
    {
        echo 'Hello World!';
    }
    function stack()
    {
        echo 'Hello Stack!';
    }      
}

3. Итак, я обнаружил, что каждый фреймворк сначала загружает файлы конфигурации, а затем загружает фронт-контроллер, это выглядит как фронт-контроллер (на ci), я предполагаю, что они так делают?

  • расширяет класс?
  • они получают название класса? затем require_once controller.nameclass.php
  • тогда они как-то ищут функции? (как они это делают?)
  • Затем они ищут функцию по умолчанию (индекс функции), а затем загружают ее?
  • если есть клиент, вызывающий url / Blog / stack, он загружает только функцию Stack, я тоже не знаю, как это работает.
  • если мы поместим $ this-> loadview ('нечто'), поэтому я предполагаю, что они вызывают функцию loadview (которая находится внутри класса Controller и требуют их по имени, например require_once something.php

Может быть, есть вторая часть этого: |,

Большое спасибо.

Адам Рамадан

Ответы [ 2 ]

1 голос
/ 01 августа 2010
  1. Фреймворк, который создал этот файл .htaccess, использует PHP для декомпозиции своих элементов (возможно, медленнее, чем Apache сделает это с более сложными объявлениями в .htaccess)
  2. Да, он определяет класс (Controller) и вызываемый метод (Action) и передает остальные параметры этому методу.Он использует call_user_func или что-то подобное для вызова функциональности после выполнения основных функций платформы.
  3. Также можно проверить наличие функции.PHP имеет некоторую базовую реализацию Reflection, которая позволяет вам увидеть, из чего построен класс / объект.

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

Это на самом деле не дает вам много.Вам больше повезет с фреймворками, если вы научитесь работать с ним, а не с тем, как он работает.

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

0 голосов
/ 01 февраля 2011

Вот очень упрощенный пример: http://r.je/mvc-in-php.html

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