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

В общем задает вопрос по интересующей "проблеме" и получаем ответ!
Я буду лучше голоден, но между креслом и рулем и на дороге.
#2. Nu3oN Off (11)
Moderator
2011.11.18 18:06
В общем на зендовском фрейме (не знаю как на других я кроме зенда и CI ничего углубленно не юзал) есть такая фича:
Вот у нас есть контроллер и нам необходимо для определенной странички указать заголовок сайта (<title></title>)
Точных названий переменных не помню, но суть в том, что в контроллере можно указать заголовок таким образом:
Код:
span style="color: #0000BB"><?phpclass 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 аналог буферизации.
Он еще только на тестировании поэтому и говна много, ну я так понимаю тебе пример надо.

Код:
span style="color: #0000BB"><?phpclass 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) - $starttime, 4) . ' Сек.</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] >= 1 && $_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])? 2 : 1 )] . (($arr_nav[($i + 1)][0])? ' / ' : ''); } $this->description .= '</small>'; }}?>
#6. Nu3oN Off (11)
Moderator
2011.11.18 18:06
TLENS, идея впринципе хорошая, но у меня на шаблонах все!
а так черпану онсновную идею! это примерно то что я и искал))) спасибо большое smile
Я буду лучше голоден, но между креслом и рулем и на дороге.
#7. Gemorroj Off (107)
Administrator
2011.11.18 19:07
Nu3oN, я не совсем понял, как ты тогда рендеришь шаблоны, не имея всех данных?
Может я не совсем понимаю, но вариантов тут с ходу несколько имеется.
#8. Nu3oN Off (11)
Moderator
2011.11.18 22:10
Я сделал по принципу TLENS'a

Код:
span style="color: #0000BB"><?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 время пишут! там идет принцип такой:

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