После прочтения общих сведения о PHP-фреймворках, MVC, остановился на CakePHP и Codeigniter. После поверхностной примерки обеих систем отсеял CakePHP за громоздкость и запутанность документации. Но в мыслях его все таки держу. Может придется перейти на него. Чтобы все уложилось в мозге, описываю все действия по созданию блога в Codeigniter по шагам. Т.ч. все что написано ниже - исключительно для собственного пользования и не претендует на нечто большее.
Исходная документация может быть найдена на официальном сайте:
- Официальный сайт
- Русская группа на GoogleGroups
- Русская сообщество в ЖЖ<(скорее мертвое чем живое)
- Великолепный User Guede
- Форум
- Wiki
Практически все что написано ниже можно посмотреть на ролике Но без исходников и на американском языке.
Ниже все шаги по созданию блога будут сопровождаться выкладкой полного кода, который можно скачать с этого сайта. Итак начинаем.
1.
Создаем локальный сайт для отладки http://ci (PHP5 + MySQL4). Далее с официального сайта скачиваем последнюю версию Codeigniter и разворачиваем в корневой директории локального сайта. (в корне директории system, user_guide). Запускаем в броузере свой сайт и обнаруживаем что Codeigniter нас приветствует ("Welcome to CodeIgniter!").
2.
Не смотря на то, что концепция проектирования Codeigniter строится на MVC, модели здесь не будет. Незачем пока. Начнем сразу с контроллера. Все контроллеры лежат в директории /system/application/controller/ Там уже лежит предустановленный welcome.php работу которого мы видели на первом шаге. Убиваем его и создаем свой контроллер: /system/application/controller/blog.php
<?
Class Blog extends Controller
{
function Blog()
{
parent::Controller();
}
function index()
{
echo "hello!";
}
}
?> |
Запустив в броузере свой сайт http://ci обнаружим ошибку. Необходимо прописать свой контролер в качестве дефолтного. Для этого открываем файл /system/application/config/routes.php находим и исправялем строку, содержащюю $route['default_controller'] :
Теперь запускаем сайт снова и наблюдаем желаемое "Hello!".
3
На предыдущем шаге контроллер занимается непосредственно выводом данных, чего согласно концепции MVC быть не должно. Поэтому необходимо разделить контроллер и предствавление VIEW (будем называть его "вьюер", а как еще?). для этого переписываем контроллер:
<?
Class Blog extends Controller
{
function Blog()
{
parent::Controller();
}
function index()
{
$data['content']='Hello World';
$this-> load-> view('blog_view',$data);
}
}
?> |
В строке $this-> load-> view('blog_view',$data); прописывается адрес вьюера, который должен быть создан в директории для вьюеров: /system/application/views/ . Название уже определили: blog_view.php
;<html> <body> <h1> <?echo $content; ?> </h1> </body> </html> |
На этот раз все получилось почти по правилам, за исключением отсутствия модели. Это будет заготовкой для следующих шагов. Все исходные коды кладем в архив в директорию step1