AGAVA partners programs http://agava.ru/partners/            

Название функции

             
Веб-курсы


Что это?

Оглавление

Основы
Основы основ

Практика
Гостевая книга
Простой сайт
Структура сайта (MVC)
Ядро (Light)
Ядро
Гостевая на SQL
Статические страницы
Модуль новостей
Система регистрации

Теория
Дебаггинг
Регулярные выражения
Введение в ООП
Паттерны проектирования

Репозитарий
BB-code
Почтовый класс
Пагинатор
Всякие полезности

Download
Полезные утилиты

Разное
Видеокурсы
Последние изменения
Вопросы и замечания сюда



Реклама

Диеты для похудения
Фреймворк Kohana. Обучение. Мануал на русском.







Шаг 7

Общие функции и классы

Следующая тонкость. Допустим у нас несколько модулей, которые выводят какие-нибудь даты. И даты эти мы хотим вывести в нужном нам формате. Написать функцию, форматирующую дату проблем не составит, однако её придется переписывать несколько раз в разных модулях. Это лениво. И еще, если эти модули пересекутся, то есть будут подключены одновременно, то будет ошибка повторного определения функции. Что бы этого избежать, такого рода функции и классы нужно выносить в отдельные файлы в отдельном каталоге.
В корне сделайте директорию libs, туда и будем помещать все файлы общих функций и классов. Своего рода фреймворк.

Ну а вот и функция:
libs/default.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php


/** 
* Функция перевода даты из азиатского формата в прописной 
* Translation function of date from the Asian format in the string 
* @param string $date, boolean $format 
* @return string 
*/ 
    
function formatDate($date$format true)  
    {  
        global 
$month

        
$day  substr($date82);          
        
$mnt  $month[substr($date52)];         
        
$year substr($date04);  
        
$time ''
         
        if(
$format)          
            
$time ' 'substr($date11);  

        return 
$day .' '$mnt .' '$year $time;  
    }

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

В этом файле можно определить несколько разных функций, которые потребуются в разных модулях. Что бы не переписывать одно и то же.
Останется подключить его к индексу и вызвать функцию там где надо. Добавим в языковой файл массив месяцев, раз они выводятся в браузер:
ru.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
  

/**
* Варианты модуля приветствия  
* Variants of the module of a greeting
*/
    
define('IRB_WHO_FIRST''Мир'); 
    
define('IRB_WHO_SECOND','Солнце'); 
    
define('IRB_WHO_THIRD''Небо'); 
    
define('IRB_WHO_FOURTH','Вася'); 
    
define('IRB_WHO_FIFTH''Петя'); 
/**
* Массив месяцев  
* The month array 
*/
    
$month = array( 
                    
'01' => 'января'
                    
'02' => 'февраля'
                    
'03' => 'марта'
                    
'04' => 'апреля'
                    
'05' => 'мая'
                    
'06' => 'июня'
                    
'07' => 'июля'
                    
'08' => 'августа'
                    
'09' => 'сентября'
                    
'10' => 'октября'
                    
'11' => 'ноября'
                    
'12' => 'декабря' 
                  
);

А в файл menu.tpl добавим её вызов:
1
2
3
4
5
6
7
8
9
10
<!-- skins/tpl/menu.tpl begin --> 
Сегодня <?php echo formatDate(date("Y-m-d"), false?> года 
<ul> 
<li><a href="?page=main">Главная страница</a></li> 
<li><a href="?page=second">Вторая страница</a></li> 
</ul> 

<!-- skins/tpl/menu.tpl end -->

Теперь подключим файл общих функций в систему
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php


/** 
* We connect a configuration file 
* Подключаем конфигурационный файл 
*/ 
    
include './config.php';  

/** 
* We connect a file of the language 
* Подключаем языковой файл 
*/ 
    
include './language/'IRB_LANGUAGE .'.php'
     
/** 
* Получаем файл переменных  
* Receive a variables file  
*/ 
    
include './variables.php'
     
/** 
* We connect a file of the general functions 
* Подключаем файл общих функций 
*/  
    
include './libs/default.php'

    
ob_start();   

/**   
* Подключаем меню   
* Includes the menu   
*/   
    
include './skins/tpl/menu.tpl';   

/** 
* The switch of modules 
* Переключатель страниц 
*/       
    
switch($page)  
    {  
/**   
* Подключаем модуль приветствия   
* Includes the greeting module   
*/          
        
case 'main':     
            include 
'./modules/main/index.php';             
            include 
'./skins/tpl/main/show.tpl';  
        break;  
/**   
* Подключаем модуль второй страницы   
* Includes the module of the second page   
*/  
        
case 'second'
            include 
'./modules/second/index.php'
            include 
'./skins/tpl/second/show.tpl';  
        break;  
/**   
* Подключаем модуль приветствия по умолчанию  
* Includes the greeting module   
*/            
        
default: 
            include 
'./modules/main/index.php';             
            include 
'./skins/tpl/main/show.tpl'
        break;     
    }   

    
$content ob_get_contents();   
    
ob_end_clean();   
/**   
* Подключаем главный шаблон   
* Includes the basic template   
*/   
    
include './skins/tpl/index.tpl';
и запустим.

Работает? Славно.
Но что мы видим? А видим мы логику в шаблоне вывода. Это предательство и нативе-синтаксис. Не пойдет.

Рейтинг@Mail.ru Рейтинг@Mail.ru Яндекс цитирования
irbis-team © 2009