Уже не помню сколько времени прошло как я забросил этот курс, но все-таки я решил довести дело до конца.
Минимализм:
Появилась такая проблема... В общем я уже сам не помню к чему я шел (итоговый код)! х_Х
Поэтому я прочитал все свои лекции и переписал все что было с нуля почти на новый лад.
Я выкинул все, что в данный момент считаю лишним для такой лекции, а именно: паттерны, без которых вполне можно обойтись и парочку классов.
Еще я немного изменил структуру каталогов и функцию автозагрузки файлов.
Итого: 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...
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) |
Всем привет! Уже не помню сколько времени прошло как я забросил этот курс, но все-таки я решил довести дело до конца. |
А что за курс то...? Вы тут что-то преподаете?