[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Курс "MVC от теории к практике"
Alehandr
Всем привет!
Уже не помню сколько времени прошло как я забросил этот курс, но все-таки я решил довести дело до конца.

Минимализм:
Появилась такая проблема... В общем я уже сам не помню к чему я шел (итоговый код)! х_Х
Поэтому я прочитал все свои лекции и переписал все что было с нуля почти на новый лад.
Я выкинул все, что в данный момент считаю лишним для такой лекции, а именно: паттерны, без которых вполне можно обойтись и парочку классов.
Еще я немного изменил структуру каталогов и функцию автозагрузки файлов.

Итого: 5.5Кб минимального кода в котором легко можно разобраться...

__autoload:
function __autoload($classname) {
//Собираем путь к файлу
$filepath = 'classes' . DS . str_replace('_', DS, strtolower($classname)) . EXT;

//Проверяем наличие файла в папке приложения
if (is_file(APP . $filepath)) {
require APP . $filepath;
return true;
}

//Проверяем наличие файла в папке движка
if (is_file(CORE . $filepath)) {
require CORE . $filepath;
return true;
}

return false;
}

Думаю тут все должно быть понятно.
Теперь, если у нас имя класса к примеру Controller_Welcome, то файл с кодом будет подключен либо app/classes/controller/welcome.php, либо core/classes/controller/welcome.php

Starter::Run
    public static function Run() {
self::LoadModules();

self::$route = isset($_GET['route'])
?
$_GET['route']
:
'';

if (self::$route == 'index.php')
self::$route = '';

$args = self::$route == ''
? array()
:
explode('/', trim(self::$route, '/'));

if (count($args) > 0)
self::$controller = array_shift($args);

if (count($args) > 0)
self::$page = array_shift($args);

call_user_func_array(
array(
'Controller_' . self::$controller,
self::$page . '_page'
), $args);
}

Разбор роута и вызов функций контроллера я в куче собрал прямо в стартере. Об этом мы уже говорили, поэтому рассусоливать не буду, кода минимум, должны сами разобраться.

Controller:
А вот теперь и самое важное в этой лекции.
Исходя из вышеперечисленного вы должны написать контроллер по умолчанию Controller_Welcome, в котором будут 2 страницы:
1. Страница по умолчанию, которая из конфига "app" выдает пользователю строку приветствия (имя найдете в конфиге).
2. При переходе по ссылке вида http://сайт_на_локалке/welcome/names/Sasha...ha/Dasha/Misha/ (имен может быть сколько угодно) будет выводить:
Hello, Sasha! Hello, Masha! Hello, Dasha! Hello, Misha!
func_get_args вам в помощь!

Исходные коды в приложении:



Спустя 22 дня, 23 часа, 12 минут, 26 секунд (11.02.2012 - 19:04) AlexanderC написал(а):
zachem is_file v __autoload($classname) ???????????

Vo pervyh eto sovsem ne pravel'nyj avtoloder no, delo vashe...



if( !(@include APP . $filepath) && !(@include CORE . $filepath) ){
return false;
}
return true;

Спустя 3 минуты, 41 секунда (11.02.2012 - 19:07) AlexanderC написал(а):
ni ili dazhe:


return !(!(@include APP . $filepath) && !(@include CORE . $filepath));

Спустя 27 дней, 23 часа, 44 минуты, 53 секунды (10.03.2012 - 18:52) DiscoInferno написал(а):
Цитата (Alehandr @ 18.01.2012 - 16:51)
Всем привет!
Уже не помню сколько времени прошло как я забросил этот курс, но все-таки я решил довести дело до конца.

А что за курс то...? Вы тут что-то преподаете?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.