#1 2011.08.21 03:16

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Логика отдельно

Если есть похожая тема, то извините, я перену пост туда.
Вот сегодня думал насчет многократных замечаний и:

Код:

1
span style="color: #0000BB"><?php////////////где-нибудь инклудим, в шапке с конфигом например...// require_once 'f.html.php';//////////function html($tpl=array(), $tplSet='index.tpl') { $path = dirname(__FILE__) .'/tpl/'. $tplSet; if(!file_exists($path)) exit('Ошибка загрузки файла шаблона: ' . $tplSet); //*/ ob_implicit_flush(0); ob_start(); require_once $path; $html = ob_get_contents(); ob_end_clean(); ob_implicit_flush(1); //*/ $from = array('/\r|\n|\t/', '/ {2,}/'); $to = array(null, ' '); $html = preg_replace($from, $to, $html); exit($html); }////////////это в каком-нибудь файле выполняется...// index.php//////////$tpl = array();$tpl['title'] = 'HELLO WORLD';$tpl['array'] = range(1,9);$tpl['content'] = 'Эта история началась давным давно!';html($tpl, 'index.tpl'); //можно и так GLOBAL $tpl;//////////?>

Ну да, знаю: типа на классах лучше, всего 1 раз подключать и т.д.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- Шаблон index.tpl -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?=$tpl['title'];?></title>
</head>
<body>
<h1><?=$tpl['title'];?></h1>
<?=$tpl['content'];?><br/>
<?php foreach($tpl['array'] as $key):?>
<h3><?=$key;?></h3>
<?php endforeach;?>
</body>
</html>

Отредактировано tipsun (2011.08.21 05:37)

Неактивен

#2 2011.08.21 05:27

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Логика отдельно

Я тут дальше копаюсь. Вот оказывается (пока что) как покайфу, когда раздельно логика и разметка. smile

Отредактировано tipsun (2011.08.21 05:36)

Неактивен

#3 2011.08.21 10:35

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

Re: Логика отдельно

велосипедные шаблонизаторы не нужны

Неактивен

#4 2011.08.21 11:13

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

Re: Логика отдельно

tipsun написал:

Я тут дальше копаюсь. Вот оказывается (пока что) как покайфу, когда раздельно логика и разметка. smile

Во первых лучше делать так:

Код:

1
span style="color: #0000BB"><?phpfunction html($tplSet='index.tpl', $tpl=array()) { ///}?>

Потому что иногда будет необходимость подключать шаблоны не передавая переменные!
Во вторых используй уже готовые варианты...
И наконец используй нативные шаблонизаторы!


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

Неактивен

#5 2011.08.21 11:25

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

Re: Логика отдельно

Nu3oN, а это не нативный? тут работает родной php синтаксис.

Неактивен

#6 2011.08.21 13:18

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

Re: Логика отдельно

Gemorroj написал:

Nu3oN, а это не нативный? тут работает родной php синтаксис.

Нативный, но не лучший вариант исполнения его!


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

Неактивен

#7 2011.08.23 06:14

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Логика отдельно

Короче искать готовый нативный шаблонизатор - ок. Спс.
----
В шаблоне в принципе можно было бы сделать так:

Код:

1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<title>Статичный текст логичней так <?=TITLE;?></title>
</head>
<body>
В функции/классе принять массив как $_ или $__<br/>
Так: <?=$_['var'];?><br/>
Или: <?=$__['var'];?><br/>
Это в основном если массив данных, как я понял сам. Надо еще почитать, посмотреть.
</body>
</html>

Неактивен

#8 2011.08.23 06:34

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Логика отдельно

Zend Framework (та гребаная библиотека, в которой все есть).
Не думал что даже там не придумали как только в самом шаблоне экранировать спец. символы или я чет не так понял. Надо скачать, посмотреть.

Отредактировано tipsun (2011.08.23 06:40)

Неактивен

#9 2011.08.23 19:56

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

Re: Логика отдельно

Неактивен

#10 2011.11.18 19:56

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Логика отдельно

Прочел в интернете, что принимать значения через __set(__get) затратно.
Лучше сделать типа $class->assign('varName', 'Hello Hell'); (как на smarty и вроде Zend)

Отредактировано tipsun (2011.11.18 19:56)

Неактивен

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

forum.wapinet.ru

PunBB Mod v0.6.2
0.016 s