#1 2011.11.18 17:19

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Алгоритмы (вопрос/ответ)

Думаю стоящий сабж для того что бы его выделить!

В общем задает вопрос по интересующей "проблеме" и получаем ответ!


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#2 2011.11.18 18:13

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Алгоритмы (вопрос/ответ)

В общем на зендовском фрейме (не знаю как на других я кроме зенда и CI ничего углубленно не юзал) есть такая фича:
Вот у нас есть контроллер и нам необходимо для определенной странички указать заголовок сайта (<title></title>)
Точных названий переменных не помню, но суть в том, что в контроллере можно указать заголовок таким образом:

Код:

1
2
3
4
5
6
7
8
9
10
11
<?php
class IndexController extends Zend_Controller_Action
{
    function indexAction()
    {
 
        $this -> view -> title 'Главная страница';
 
    }
}
?>

хочу себе организовать такую же шнягу! я вижу выход из ситуации только ob_start() и т.д
а потом просто заменять необходимые элементы!

У кого какие предложения?
З.ы только не посылайте меня лопатить зендовский фрейм, я лучше повешусь  big_smile


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#3 2011.11.18 18:18

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Алгоритмы (вопрос/ответ)

Nu3oN Я юзаю деструктор.
Вот пример:

Неактивен

#4 2011.11.18 18:20

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Алгоритмы (вопрос/ответ)

TLENS написал:

Вот пример:

эммм... где??


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#5 2011.11.18 18:26

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Алгоритмы (вопрос/ответ)

В общем пример таков в начале иницыализируется класс Тема
Далее по пути работы скрипта изменяются публичные свойства.
И в деструкторе вывожу в браузер все.
В общем думал катнуть код простой но в падло.
Вот мой файл themes.class.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
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
class Themes {
    public $title;
    public $nav;
    public $description;
    public $description_foot;
    public $content;
    public $desc;
    public $keyword;
    public $head;
    public function __construct () {
        global $_SET;
 
    }
    public function __destruct () {
        global $_SET$starttime;
        $this->parse();
        header("Content-type: text/html; charset=utf-8");
        $prev  = (($_SET->prev == 120) ? '<b>120x90</b>' '<a href="?preview=120">120x90</a>');
        $prev .= ' / ';
        $prev .= (($_SET->prev == 40) ? '<b>40x30</b>' '<a href="?preview=40">40x30</a>');
        $r '<?xml version="1.0" encoding="utf-8"?>'                                                                          "\n"
            .'<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">' "\n"
            .'<html>'                                                                                                          "\n"
            .' <head>'                                                                                                         "\n"
            .' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'                                          "\n"
            .' <meta name="' $this->keyword '" />'                                                                         "\n"
            .' <meta name="description" content="' .$this->desc'" />'                                                        "\n"
            .' <title>' $this->title '</title>'                                                                            "\n"
            .' <link rel="stylesheet" type="text/css" href="/themes/' $_SET->themes '/style.css" />'                       "\n"
            $this->head
            .' </head>'                                                                                                        "\n"
            .' <body>'                                                                                                         "\n"
                                                                                                                               "\n"
            .' <div id="title">'                                                                                               "\n"
            .' <a href="' $_SET->home '">'
                .'<img style="position: relative;top: 5px;" src="/themes/' $_SET->themes '/images/logo.png" alt="" /></a>' "\n"
            .' </div>'                                                                                                         "\n"
                                                                                                                               "\n"
            .' <div id="nav">' $this->nav '</div>'                                                                         "\n"
            .' <div id="description">' $this->description '</div>'                                                         "\n"
                                                                                                                               "\n"
            .' <div id="content">'                                                                                             "\n"
            .' Предосмотр: ' $prev '<br />'                                                                                "\n"
            $this->content                                                                                                   "\n"
            .' </div>'                                                                                                         "\n"
            .'  <div id="description-foot">'                                                                                   "\n"
            .'   ' .$this->description_foot                                                                                    "\n"
            .'  </div>'                                                                                                        "\n"
                                                                                                                               "\n"
            .'  <div id="foot">'                                                                                               "\n"
            .'   <div style="text-align:center">'
            //.'    <a href="http://fixwap.net/ru/?uid=11598"><img src="http://fixwap.net/ru/count.php?uid=11598" alt="fixwap"/></a>'    . "\n"
            .'    <a href="http://weplog.net/in/8375"><img src="http://weplog.net/8375/1.cnt" alt="wap сайты" title="wap сайты" /></a>'"\n"
            .'    <a href="http://waplog.net/c.shtml?352534"><img src="http://c.waplog.net/352534.cnt" alt="waplog" /></a>'            "\n"
            .'    <a href="http://mstop.ru/?uid=860"><img src="http://mstop.ru/count.php?860" alt="mstop.ru"/></a>'                  "\n"
            //.'    <a href="http://top.sexvirus.ru/click.php?2367"><img src="http://top.sexvirus.ru/image.php?2367,small" alt="top.sexvirus.ru" /></a>' . "\n" 
            .'    <br />'                                                                                                              "\n"
            .'    <a href="http://top4wap.ru/5883"><img src="http://top4wap.ru/cnt4.gif?5883" alt="TOP4WAP.ru"/></a><br />'            "\n"
            .'    <small>' round(microtime(1) - $starttime4) . ' Сек.</small> '                                                    "\n"
            .'   </div>'                                                                                                               "\n"
            .'  </div>'                                                                                                                "\n"
            .' </body>'                                                                                                                "\n"
            .'</html>';
            //var_dump($this);
            //highlight_string($r);
            echo $r;
    }
    private function parse () {
        global $_SET;
        if (!$this->title) {
            if ($_SET->page[1]) {
                $this->title $_SET->page[1] . ' - Лучшее порно';
            } else {
                $this->title 'Лучшее порно';
            }
            
        } else {
            $this->title $this->title ' - Лучшее порно';
        }
        
        if ($this->content == '') {
            $this->content '  <b>Страница не найдена</b>';
        }
        
        if (!$this->description) {
            $this->description '  Все самое лучшее здесь!';
        }
        
        if ($this->nav) {
            $this->nav $this->navig();
        }
        
        if (!$this->nav) {
            $this->navig();
        }
        if (!$this->keyword) {
            $this->keyword 'keywords" content="podsmotri.org, best, xxx, порно, Инцест, Домашка, руское, эротика, видео, 3gp, mp4, трах, секс, подсмотренное, лучшее';
        }
        if (!$this->desc) {
            $this->desc 'Лучшая подборка xxx, Бесплатное xxx, Домашнее xxx, Руское xxx, Скачать 3gp, Скачать mp4, Популярное xxx, Ржачное xxx, Скрытая камера';
        }
    }
    private function navig () {
        global $_SET;
        $arr_top[1] = array('<a href="/' $_SET->act '/new/">Новые</a>''<b>Новые</b>');
        $arr_top[2] = array('<a href="/' $_SET->act '/search/">Поиск</a>''<b>Поиск</b>');
        $arr_top[3] = array('<a href="/' $_SET->act '/top_week/">Топ нед.</a>''<b>Топ нед.</b>');
        $arr_top[4] = array('<a href="/' $_SET->act '/top_month/">Топ мес.</a>''<b>Топ мес.</b>');
        $arr_top[5] = array('<a href="/' $_SET->act '/top_all/">Топ все</a>''<b>Топ все</b>');
        $c count($arr_top);
        $this->nav '<small>';
        for ($i=1$i<=$c$i++) {
            $this->nav .= $arr_top[$i][(($_SET->page[0] == $i)?1:0)] . (($i<$c)? ' | ' '');
        }
        $this->nav .= '</small>';
        
        $if = ($_SET->page[0] >= && $_SET->page[0] <= 5);
        
        $arr_nav[1] = array('video''<a href="/video/' . (($if)? $_SET->page[2] : 'new') . '/">Видео</a>''<b>Видео</b>');
        $arr_nav[2] = array('photo''<a href="/photo/' . (($if)? $_SET->page[2] : 'new') . '/">Фото</a>''<b>Фото</b>');
        $i 0;
        $this->description '<small>';
        while ($arr_nav[++$i][0]) {
        //()
            $this->description .= $arr_nav[$i][(($_SET->act == $arr_nav[$i][0])? )] . (($arr_nav[($i 1)][0])? ' / ' '');
            
        }
        $this->description .= '</small>';
    }
}
 
 
 
?>

Неактивен

#6 2011.11.18 18:32

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Алгоритмы (вопрос/ответ)

TLENS, идея впринципе хорошая, но у меня на шаблонах все!
а так черпану онсновную идею! это примерно то что я и искал))) спасибо большое smile


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#7 2011.11.18 19:44

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: Алгоритмы (вопрос/ответ)

Nu3oN, я не совсем понял, как ты тогда рендеришь шаблоны, не имея всех данных?
Может я не совсем понимаю, но вариантов тут с ходу несколько имеется.

Неактивен

#8 2011.11.18 22:04

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Алгоритмы (вопрос/ответ)

Я сделал по принципу TLENS'a

Код:

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
<?php
        if (is_file(PATH_TEMPLATES self :: OUTPUT_THEME '/template.inc.php')) {
 
            require_once(PATH_TEMPLATES self :: OUTPUT_THEME '/template.inc.php');
            Logging :: setMark('Подключение файла настроек шаблона');
 
        } else {
            trigger_error('Ошибка при подключении файла настроек шаблона'E_USER_ERROR);
        }
 
        /* * Указываем залоговок страницы. */
        if (empty($this -> arrHeader['title'])) {
            $arrHeader['title'] = $titles['title'];
        } else {
            $arrHeader['title'] = $this -> arrHeader['title'];
        }
        /* * Указываем ключевые слова. */
        if (empty($this -> arrHeader['keywords'])) {
            $arrHeader['keywords'] = $titles['keywords'];
        } else {
            $arrHeader['keywords'] = $this -> arrHeader['keywords'];
        }
        /* * Указываем описание страницы. */
        if (empty($this -> arrHeader['description'])) {
            $arrHeader['description'] = $titles['description'];
        } else {
            $arrHeader['description'] = $this -> arrHeader['description'];
        }
        /* * Указываем где мы берем стиль. */
        $arrHeader['link_css'] = $titles['link_css'];
        /* * Указываем где мы берем иконку. */
        $arrHeader['link_ico'] = $titles['link_ico'];
        
        /* * Закрываем буферизацию. */
        $strOut ob_get_contents();
        ob_end_clean();
        
        header("Content-type: text/html; charset=utf-8");
 
        /* * Выводим основной шаблон. */
        $this -> view -> assign('arrHeader'$arrHeader);
        $this -> view -> assign('outContent'$strOut);
        $this -> view -> display('/''primary'); die;
 
    }

Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#9 2011.11.18 22:53

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Алгоритмы (вопрос/ответ)

Кстати юзав CI увидел "маркеры", и придумал велосипед, который оказался очень полезным!
полностью вижу весь процесс выполнения скрипта:

Начало ведения меток
Подключение класса "Logging"
Подключение файла "setting"
Подключение файла "common"
Старт сессии
Подключение класса "MVC_Router"
Определение категории с контроллером
Определение файла контроллера
Подключение класса "MVC_Controller"
Подключение файла контроллера
Запуск контроллера
Подключение класса "DB"
Подключение класса "DB_ClassBase"
Подключение класса "NativeTemplate"
Проверка существования категории с шаблонами
Подключение класса "GetHelpers"
Подключение хэлпера "testhelp()"
Подключение шаблона "index"
Подключение файла настроек шаблона
Передаем переменные в шаблон
Подключение шаблона "primary"
Конец ведения меток

Только в CI время пишут! там идет принцип такой:

Код:

1
2
3
4
5
6
7
<?php
function name_function($var)
{
    $this -> mark[$var] = microtime();
}
 
name_function('controller_execution_time_( '.$class.' / '.$method.' )_start');

а нахрена это надо я так и не нашел...


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#10 2011.11.19 11:23

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: Алгоритмы (вопрос/ответ)

возможно, для выявления ресурсоемких мест.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.016 s