[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Изменения в курс от twin'a
twin
Перетряхнул я полностью курс. Теперь тут буду писать все изменения.
Сейчас их слишком много, проще пробежаться с самого начала.
В каждый урок прикрепил файл.
На вскидку:
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-м уроке.
/**
* 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, какой префикс поставить - долго не думал. smile.gif

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 написал(а):
Полный передел собственности. biggrin.gif

Перенес я курсы к себе, там удобнее и править (тут постоянные глюки с редактированием) и листать (все в одном месте с общей навигацией).
Кроме того, там есть еще куча полезностей, пригодится. Обсуждать будем здесь, там ссылки на каждый пост.

Сам курс перетряхнул полностью. Упростил до безобразия.
Теперь там нет никаких новостей и галерей, зато ничего не отвлекает от структуры.
Последнюю кстати наконец то привел в порядок. Теперь все стройно и логично.
Вобщем разбирайтесь и продолжим.

Спустя 5 минут, 50 секунд (17.02.2010 - 11:52) baston написал(а):
Цитата (twin @ 17.02.2010 - 11:46)
Перенес я курсы к себе, там удобнее и править (тут постоянные глюки с редактированием) и листать (все в одном месте с общей навигацией).

Значит, опять по-новой распечатывать rolleyes.gif
Ну, не могу я с экрана читать долго. А так, распечатал, читаешь и делаешь.

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

user posted image

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

PS сеньк, поправил. В опере не видно. она все прощает)) А версмтальщик из меня еще тот.

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

Да, на бумажную бумагу biggrin.gif
Нет, спасибо, для меня лично не надо. Я уже распечатал. Но может быть кто-то еще по-старинке действует...
Да и для практики лучше руками все коды набивать - усваивается лучше.
Спасибо за курс - стало отлично.

Спустя 33 минуты, 20 секунд (17.02.2010 - 12:56) twin написал(а):
Цитата
Да и для практики лучше руками все коды набивать - усваивается лучше.

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

Вообще я хочу там же сделать мануал. Такой же простецкий. Только времени нет.
Если у кого есть свободное время, подсобили бы? smile.gif

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

Спустя 10 минут, 35 секунд (17.02.2010 - 13:29) twin написал(а):
Нет там больше пагинатора никакого. smile.gif
А если хочешь разобраться, то вон сколько их.

Спустя 13 минут, 4 секунды (17.02.2010 - 13:42) Evilsoul написал(а):
О, спасибо, еще один урок для меня smile.gif

Спустя 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';

Спустя 1 час, 26 минут, 20 секунд (22.02.2010 - 11:51) twin написал(а):
Спасибо, исправил smile.gif

Спустя 2 дня, 2 часа, 57 минут, 27 секунд (24.02.2010 - 14:48) A.V. написал(а):
twin,

а проблема с перенаправлением (отключённым rewrit'ом) уже исправлена?
И каким образом, если да?

Спустя 2 часа, 4 минуты, 5 секунд (24.02.2010 - 16:52) twin написал(а):
Да, в новом работает нормально... Правда впопыхах не помню что исправил sad.gif


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

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