Как вы используете парадигму MVC в PHP с ADODB в качестве DAL? - PullRequest
0 голосов
/ 24 сентября 2010

Нет ОРМ.Все, что я знаю, это то, что у меня есть PHP 5+ и adodb.Из этих двух, как я могу использовать MVC?Я не могу использовать другие фреймворки, и я не прошу, чтобы кто-то строил что-то с нуля (я хочу учиться!). Но как бы мне начать здесь? Я знаю, как неправильно смешивать вещи в классическом стиле ASP. Что я не делаюЯ знаю, как это сделать, на самом очень простом уровне, чтобы сделать MVC. Скажем, у меня была модель, которая представляет собой просто некоторые adodb и SQL, как мне сделать так, чтобы перейти от моей «модели» к моему представлению? Или как я вызываючто-нибудь из моего контроллера, так как у меня нет ORM для вызова?

Может кто-нибудь дать мне что-то конкретное? Я надеюсь, что это основа будущей CMS.

Спасибо

Ответы [ 3 ]

5 голосов
/ 25 сентября 2010

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

Ваша модель является вашим основным приложением. Скорее всего, он сам по себе многоуровневый, например, в слой доступа к данным (ваш материал AdoDB), модель домена и уровень обслуживания . То, как вы организуете модель, зависит от приложения, которое вы хотите построить. С MVC важно сохранять независимость модели от презентации. Ваше приложение должно быть в состоянии решить проблему, для которой оно было написано, без UI. UI - только один интерфейс сверху.

В основном, пока ваш контроллер поддерживается тонким и делает это

class SomeController
{
    public function someAction()
    {
        $input   = filter_input(/* ... */);
        $adoDb   = $this->getModel('MyAdoDbClass');
        $newData = $adoDb->doSomethingWithInput($input);
        $this->getView()->setData($newData);
        $this->getView()->render();
    }
}

и не это

class SomeController
{
    public function someAction()
    {
        $input  = filter_input(/* ... */);
        $adoDb  = new AdoDb; 
        /*
            all the code that belongs to doSomethingWithInput
            ...
        */
         echo '<html>'; 
        /*
            all the code that should belongs to the View                 ...
         */
    }
}

ты в порядке. Как я уже сказал, в этом нет ничего волшебного. Ты должен держать их отдельно.

Я предлагаю вам взглянуть на другие фреймворки, чтобы увидеть, как они подходят к MVC. Это не значит, что вы должны копировать или использовать их, но попытайтесь узнать, как они работают с MVC. Также взгляните на статью Расмуса Лердорфа: PHP-фреймворк без фреймворка

0 голосов
/ 24 сентября 2010

Вы можете самостоятельно кодировать что-либо со стилем MVC, просто отделив файлы представлений (используя Smarty или простые старые файлы PHP) от ваших моделей (объекты, которые отображаются в вашей базе данных) и ваших контроллеров (файлы PHP, которые выполняют ""хрущ" ", но я бы порекомендовал PHP-фреймворк, который уже делает тяжелую работу за вас.

Zend = zend.com * возможно, отраслевой стандарт

CakePHP = cakephp.org * очень гладкий

Kohana = kohanaframework.org * требует php5 +, на основе CodeIgniter

CodeIgniter = codeigniter.com * требует php4 +

Я большой поклонник Kohana, который только что выпустилновая версия.Kohana имеет встроенный инструмент ORM, объект представления и уже встроенный метод для контроллеров для обработки запросов действий.

0 голосов
/ 24 сентября 2010

Основа будущей CMS? Почему бы не начать с одного из миллиардов проектов php CMS с открытым исходным кодом и развернуть его для удовлетворения своих потребностей?

Если вы хотите изучить парадигму MVC, изучите php MVC framework. Учиться 2 еще лучше.

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

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