Сейчас их слишком много, проще пробежаться с самого начала.
В каждый урок прикрепил файл.
На вскидку:
1. Изменилась функция трассировщика.
2. С помощью glock18 привел в порядок обертку для запросов (mysqlQuery())
3. Изменился немного шаблонизатор и сами шаблоны.
Ну соответственно многое изменилось внутри.
Вообще оглавление вот:
Содержание курса
Урок № 0.
Внеплановый. Дебагинг. Обсуждение и вопросы тут
Урок № 1.
Подготовительные работы. Обсуждение и вопросы тут
Урок № 2.
Инициализация GET переменных. Обсуждение и вопросы тут
Урок № 3.
Формируем ссылки и структуру. Обсуждение и вопросы тут
Урок № 4.
Паттерн MVC. Модель.Обсуждение и вопросы тут
Урок № 5.
Паттерн MVC. Вид.Обсуждение и вопросы тут
Урок № 6.
Обработка POST данных.Обсуждение и вопросы тут
Урок № 7.
ИнтерактивОбсуждение и вопросы тут
Урок № 8.
ИтогиОбсуждение и вопросы тут
Спустя 5 дней, 3 часа, 35 минут, 14 секунд (21.12.2009 - 05:44) twin написал(а):
1. В .htaccess добавлена строчка
Options -Indexes
Цитата |
Эта строка запретит вывод списка файлов и директорий, если в папке не окажется индекса. |
2. В функции getMeta() (файл default.php) добавлена проверка ключа
/**
* Function of formation of meta-tags
* Функция формирования мета-тегов
*/
function getMeta($tag)
{
if(!file_exists(ROOT .'/skins/setup/meta.txt'))
die('There is no file with the data for meta tags');
static $meta;
global $GET;
if(empty($meta))
{
$meta = unserialize(file_get_contents (ROOT .'/skins/setup/meta.txt'));
if(!is_array($meta))
die('Meta-data are not established');
}
if(!empty($meta[$GET['mod']][$tag]))
return $meta[$GET['mod']][$tag];
else
return NULL;
}
3. В функции escapeString() (файл mysql.php) исправлена опечатка
/**
* Function of processing of literal constants for SQL
* Функция обработки литеральных констант для SQL
*/
function escapeString($data)
{
if(is_array($data))
$data = array_map("escapeString", $data);
else
$data = mysql_real_escape_string($data);
return $data;
}
4. В файле variables.php исправлены строки
/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/
if(!defined('KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('./404.html'));
}
Спустя 21 час, 52 минуты, 19 секунд (22.12.2009 - 03:36) twin написал(а):
Кардинально поменял функцию parseTpl(). Как раньше не додумался до такого простого решения...
Объяснения в 5-м уроке.
Объяснения в 5-м уроке.
/**
* Function of analysis of a template
* Функция разбора шаблона
*/
function parseTpl($cont, $data)
{
extract($data, EXTR_PREFIX_ALL, 'tpl');
ob_start();
eval('?>'. $cont .'<?php ');
$code = ob_get_contents();
ob_end_clean();
return $code;
}
Спустя 1 день, 5 часов, 48 минут, 24 секунды (23.12.2009 - 09:24) twin написал(а):
1. Добавил префиксы во все константы. Так как торговой маркой движка будет IRBIS, какой префикс поставить - долго не думал.
2. Всетаки трудно народу с непривычки работать с глобальными переменными. Ну да и не будем усугублять. Кто то предлагал заплатку в функцию href(), ну и поставим. Будет действительно проще.
3. В функцию parseTpl() добавил проверку массива
4. Переключатель контроллеров в индексах модулей будем делать свичем. Как в главном. На поверку это оказалось быстрее и удобнее и безопаснее. Кроме того, это позволит подключить несколько контроллеров в раздел.
5. Все (почти все) физические пути сделал абсолютными. Хронометраж показал, что это быстрее.

2. Всетаки трудно народу с непривычки работать с глобальными переменными. Ну да и не будем усугублять. Кто то предлагал заплатку в функцию href(), ну и поставим. Будет действительно проще.
/**
* Function of formation of GET-parametres
* Функция формирования GET-параметров
*/
function href()
{
global $GET;
$tmp = $GET; // Вот тут перезапишем, чтоб не изменять $GET
$href = '';
$arg = func_get_args();
if($arg[0] == 'host')
return IRB_HOST;
if(is_array($arg[0]))
$arg = $arg[0];
foreach($arg as $var)
{
$get = explode('=', $var);
if(array_key_exists($get[0], $tmp))
$tmp[$get[0]] = $get[1];
else
die('The variable <b>'. $get[0] .'</b> is not defined');
}
foreach($tmp as $var => $val)
if(IRB_REWRITE == 'on')
$href .= '/'. $val;
elseif(!empty($val))
$href .= '&'. $var .'='. $val;
if(IRB_REWRITE == 'on')
return IRB_HOST . trim($href, '/');
else
return IRB_HOST .'?'. trim($href, '&');
}
3. В функцию parseTpl() добавил проверку массива
/**
* Function of analysis of a template
* Функция разбора шаблона
*/
function parseTpl($cont, $data = '')
{
if(is_array($data))
{
extract($data, EXTR_PREFIX_ALL, 'tpl');
ob_start();
eval('?>'. $cont .'<?php ');
$cont = ob_get_contents();
ob_end_clean();
}
return $cont;
}
4. Переключатель контроллеров в индексах модулей будем делать свичем. Как в главном. На поверку это оказалось быстрее и удобнее и безопаснее. Кроме того, это позволит подключить несколько контроллеров в раздел.
/**
* The switch of controllers
* Переключатель контроллеров
*/
switch($GET['rem'])
{
case 'read':
include IRB_ROOT .'/modules/news/read_controller.php';
break;
case 'full':
include IRB_ROOT .'/modules/news/full_controller.php';
break;
default:
include IRB_ROOT .'/modules/news/read_controller.php';
break;
}
5. Все (почти все) физические пути сделал абсолютными. Хронометраж показал, что это быстрее.
include IRB_ROOT .'/modules/news/read_controller.php';
Спустя 1 день, 14 часов, 29 минут, 35 секунд (24.12.2009 - 23:54) Хозяин Огня написал(а):
Так какой вариант parseTpl окончательный?
Спустя 5 часов, 34 минуты, 27 секунд (25.12.2009 - 05:29) twin написал(а):
Хозяин Огня
Цитата |
Так какой вариант parseTpl окончательный? |
С того момента, как ты решишь, что какой то вариант окончательный и не может быть улучшен, ты перестанешь быть программистом. Даже не думай об этом.
Перетряхнул я курс еще раз. Те, кто уже прошел все уроки, не стоит возвращаться. Я там многое упростил, так как оказалось нужно быть ближе к народу.
Все, чего там нет, я компенсирую в следующем уроке. Уже пишу.
Кстати, я почистил комментарии, что бы не сбивать с толку тех, кто только начинает. Все ваши посты пока здесь, потом я отсортирую.
Спустя 1 месяц, 20 дней, 6 часов, 17 минут, 43 секунды (17.02.2010 - 11:46) twin написал(а):
Полный передел собственности.
Перенес я курсы к себе, там удобнее и править (тут постоянные глюки с редактированием) и листать (все в одном месте с общей навигацией).
Кроме того, там есть еще куча полезностей, пригодится. Обсуждать будем здесь, там ссылки на каждый пост.
Сам курс перетряхнул полностью. Упростил до безобразия.
Теперь там нет никаких новостей и галерей, зато ничего не отвлекает от структуры.
Последнюю кстати наконец то привел в порядок. Теперь все стройно и логично.
Вобщем разбирайтесь и продолжим.

Перенес я курсы к себе, там удобнее и править (тут постоянные глюки с редактированием) и листать (все в одном месте с общей навигацией).
Кроме того, там есть еще куча полезностей, пригодится. Обсуждать будем здесь, там ссылки на каждый пост.
Сам курс перетряхнул полностью. Упростил до безобразия.
Теперь там нет никаких новостей и галерей, зато ничего не отвлекает от структуры.
Последнюю кстати наконец то привел в порядок. Теперь все стройно и логично.
Вобщем разбирайтесь и продолжим.
Спустя 5 минут, 50 секунд (17.02.2010 - 11:52) baston написал(а):
Цитата (twin @ 17.02.2010 - 11:46) |
Перенес я курсы к себе, там удобнее и править (тут постоянные глюки с редактированием) и листать (все в одном месте с общей навигацией). |
Значит, опять по-новой распечатывать

Ну, не могу я с экрана читать долго. А так, распечатал, читаешь и делаешь.
Спустя 25 минут, 6 секунд (17.02.2010 - 12:17) baston написал(а):
Николай, посмотрите на левый верхний угол страницы с уроками - там нет закрывающего тега для комментария:

Спустя 2 минуты, 30 секунд (17.02.2010 - 12:20) twin написал(а):
Не понял, как распечатываешь... на бумагу? Давай я для принтера тогда сделаю версию. Только попозже. И так из графика вылетел.
PS сеньк, поправил. В опере не видно. она все прощает)) А версмтальщик из меня еще тот.

PS сеньк, поправил. В опере не видно. она все прощает)) А версмтальщик из меня еще тот.
Спустя 3 минуты, 3 секунды (17.02.2010 - 12:23) baston написал(а):
Цитата (twin @ 17.02.2010 - 12:20) |
Не понял, как распечатываешь... на бумагу? Давай я для принтера тогда сделаю версию. Только попозже. И так из графика вылетел. |
Да, на бумажную бумагу

Нет, спасибо, для меня лично не надо. Я уже распечатал. Но может быть кто-то еще по-старинке действует...
Да и для практики лучше руками все коды набивать - усваивается лучше.
Спасибо за курс - стало отлично.
Спустя 33 минуты, 20 секунд (17.02.2010 - 12:56) twin написал(а):
Цитата |
Да и для практики лучше руками все коды набивать - усваивается лучше. |
Только учти, там в тексте есть ссылки на внутренние страницы, где кое что разжевано подробнее.
Вообще я хочу там же сделать мануал. Такой же простецкий. Только времени нет.
Если у кого есть свободное время, подсобили бы?

Спустя 22 минуты, 21 секунда (17.02.2010 - 13:18) Evilsoul написал(а):
Вот снова разбераю курсы и немогу понять работу пагинатора (навигации), что-то он отказываться переключать страницы когда их больше десятка.
Спустя 10 минут, 35 секунд (17.02.2010 - 13:29) twin написал(а):
Спустя 13 минут, 4 секунды (17.02.2010 - 13:42) Evilsoul написал(а):
О, спасибо, еще один урок для меня

Спустя 7 часов, 37 минут, 51 секунда (17.02.2010 - 21:20) baston написал(а):
Николай, еще обнаружил, что вы убрали уроки по гостевым книгам (на файлах и БД), по почте и регистрации.
Они тоже будут изменены?
Они тоже будут изменены?
Спустя 30 минут, 22 секунды (17.02.2010 - 21:50) twin написал(а):
Я ничего не убирал, они на другом сайте. На этом.
Но менять я буду все, раз пошла такая пьянка. Я не думал, что там такая посещаемость будет, ведь кроме как здесь никуда ссылки не давал... Сейчас придется в порядок все приводить.
Но менять я буду все, раз пошла такая пьянка. Я не думал, что там такая посещаемость будет, ведь кроме как здесь никуда ссылки не давал... Сейчас придется в порядок все приводить.
Спустя 4 дня, 12 часов, 33 минуты, 17 секунд (22.02.2010 - 10:24) Guest написал(а):
http://irbis-team.com/15/3/4
ошибка в коде
ошибка в коде
Спустя 45 секунд (22.02.2010 - 10:24) Guest написал(а):
/**
* Подключаем меню
* Includes the menu
*/
include './skins/tpl/menu.html';
* Подключаем меню
* Includes the menu
*/
include './skins/tpl/menu.html';
Спустя 1 час, 26 минут, 20 секунд (22.02.2010 - 11:51) twin написал(а):
Спасибо, исправил

Спустя 2 дня, 2 часа, 57 минут, 27 секунд (24.02.2010 - 14:48) A.V. написал(а):
twin,
а проблема с перенаправлением (отключённым rewrit'ом) уже исправлена?
И каким образом, если да?
а проблема с перенаправлением (отключённым rewrit'ом) уже исправлена?
И каким образом, если да?
Спустя 2 часа, 4 минуты, 5 секунд (24.02.2010 - 16:52) twin написал(а):
Да, в новом работает нормально... Правда впопыхах не помню что исправил

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
