Вы не зашли.
Главная » PHP » Алгоритмы (вопрос/ответ)
#1. Nu3oN Off (11)
Moderator
2011.11.18 17:05
Думаю стоящий сабж для того что бы его выделить!

В общем задает вопрос по интересующей "проблеме" и получаем ответ!
Я буду лучше голоден, но между креслом и рулем и на дороге.
#2. Nu3oN Off (11)
Moderator
2011.11.18 18:06
В общем на зендовском фрейме (не знаю как на других я кроме зенда и CI ничего углубленно не юзал) есть такая фича:
Вот у нас есть контроллер и нам необходимо для определенной странички указать заголовок сайта (<title></title>)
Точных названий переменных не помню, но суть в том, что в контроллере можно указать заголовок таким образом:
Код:
<?php
class IndexController extends Zend_Controller_Action
{
    function indexAction()
    {
 
        $this -> view -> title 'Главная страница';
 
    }
}
?>
хочу себе организовать такую же шнягу! я вижу выход из ситуации только ob_start() и т.д
а потом просто заменять необходимые элементы!

У кого какие предложения?
З.ы только не посылайте меня лопатить зендовский фрейм, я лучше повешусь  big_smile
Я буду лучше голоден, но между креслом и рулем и на дороге.
#3. TLENS Off (14)
Moderator
2011.11.18 18:06
Nu3oN Я юзаю деструктор.
Вот пример:
#4. Nu3oN Off (11)
Moderator
2011.11.18 18:06
TLENS написал:
Вот пример:
эммм... где??
Я буду лучше голоден, но между креслом и рулем и на дороге.
#5. TLENS Off (14)
Moderator
2011.11.18 18:06
В общем пример таков в начале иницыализируется класс Тема
Далее по пути работы скрипта изменяются публичные свойства.
И в деструкторе вывожу в браузер все.
В общем думал катнуть код простой но в падло.
Вот мой файл themes.class.php аналог буферизации.
Он еще только на тестировании поэтому и говна много, ну я так понимаю тебе пример надо.

Код:
<?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. Nu3oN Off (11)
Moderator
2011.11.18 18:06
TLENS, идея впринципе хорошая, но у меня на шаблонах все!
а так черпану онсновную идею! это примерно то что я и искал))) спасибо большое smile
Я буду лучше голоден, но между креслом и рулем и на дороге.
#7. Gemorroj Off (108)
Administrator
2011.11.18 19:07
Nu3oN, я не совсем понял, как ты тогда рендеришь шаблоны, не имея всех данных?
Может я не совсем понимаю, но вариантов тут с ходу несколько имеется.
#8. Nu3oN Off (11)
Moderator
2011.11.18 22:10
Я сделал по принципу TLENS'a

Код:
<?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. Nu3oN Off (11)
Moderator
2011.11.18 22:10
Кстати юзав CI увидел "маркеры", и придумал велосипед, который оказался очень полезным!
полностью вижу весь процесс выполнения скрипта:
Начало ведения меток
Подключение класса "Logging"
Подключение файла "setting"
Подключение файла "common"
Старт сессии
Подключение класса "MVC_Router"
Определение категории с контроллером
Определение файла контроллера
Подключение класса "MVC_Controller"
Подключение файла контроллера
Запуск контроллера
Подключение класса "DB"
Подключение класса "DB_ClassBase"
Подключение класса "NativeTemplate"
Проверка существования категории с шаблонами
Подключение класса "GetHelpers"
Подключение хэлпера "testhelp()"
Подключение шаблона "index"
Подключение файла настроек шаблона
Передаем переменные в шаблон
Подключение шаблона "primary"
Конец ведения меток
Только в CI время пишут! там идет принцип такой:

Код:
<?php
function name_function($var)
{
    $this -> mark[$var] = microtime();
}
 
name_function('controller_execution_time_( '.$class.' / '.$method.' )_start');
а нахрена это надо я так и не нашел...
Я буду лучше голоден, но между креслом и рулем и на дороге.
#10. Gemorroj Off (108)
Administrator
2011.11.19 11:11
возможно, для выявления ресурсоемких мест.
Страниц: 1 2 35 Все
Главная
WEB
PunBB Mod v0.6.2
0.018 s