Powered by CodeIgniter
admin

admin

58
62 голоса
  ПрофильБлог (155)Комментарии (2177)Закладки (11)Продукты (19) 
Чашка кофеДрузья, искренне приветствую вас!
Вчера весь день трудился над переходом с Quicky на PHP-Native. К сожалению, меня временно одолел легкий грипп, поэтому сегодняшний день провел в лечебных палатах.
Работа над движком идет постоянно, поскольку по сути данная работа давно превратилась в хобби. Хочу сказать, что как и прежде несколько противлюсь чистому PHP в шаблонах, поэтому предоставлю вам на выбор родной для PHP или похожий на Smarty синтаксис.
Одни и те же моменты в разных вариантах.
  • PHP-Native
    <?php if(isset($show) && $show):?> <?php foreach($nodes as $node):?>
    id)):?>id="<?php echo $node->id;?>"<?php endif;?>> <?php if(isset($node->body)){ echo $node->body};?>
    <?php endforeach;?> <?php endif;?>
  • Шаблонизатор
    {if $show} {foreach $nodes as $node}
    {$node->body}
    {/foreach} {/if}
Из приведенного примера следует, что собственный шаблонизатор позволяет сократить количество кода шаблона и сделать его более читаемым. Такие шаблоны компилируются и подключаются в виде готового PHP-кода. При этом вы будете вольны использовать и чистый PHP.
По приблизительным оценкам потребление оперативной памяти сократится в полтора раза, а время загрузки увеличится вдвое.
22:04 ← 22 июля 2009 Отправить в Твиттер adminadmin  RSS comments 19

Комментарии (19) ↓

Sasha Sasha time 23:20 ← 22 июля 2009 #
Какие теперь вопросы на повестке дня?
жёсткий офтоп: обратил внимание, что в Питере в последние пол года бОльшая часть моего окружения переженилась и понарожали детей :)
Автор
admin admin time 23:22 ← 22 июля 2009 #
Закончу шаблонизатор и перехожу к комментам. После будет установщик.
nooname nooname time 00:00 ← 23 июля 2009 #
мои поздравления :)
а как же медовый месяц?
Автор
admin admin time 00:34 ← 23 июля 2009 #
Спасибо! Месяц — слишком долго. Свадебное путешествие на пару недель — другой разговор.
Хочу обратить ваше внимание на то, что работа над движком идет даже когда я нахожусь далеко от компьютера — в моем подсознании :-)
Minister Minister time 01:24 ← 23 июля 2009 #
Присоединяюсь к поздравлениям!
Поскорее выздоравливать и не болеть! :)
Получается в php native потребление памяти будет гораздо ниже, чем с собственным шаблонизатором?
Код в php native можно было бы вообще сократить до такого варианта:
<? if(!empty($show)):?> <? foreach($nodes as $node):?> <div class="node" <?=(!empty($node->id) ? " id=\"".$node->id."\"" : "");?>> <?=(!empty($node->body) ? $node->body : "");?> </div> <? endforeach;?> <? endif;?>
Меньше кода, меньше весят файлы ;)
Да и на мой взгляд не так уж страшно выглядит вся эта конструкция.
Автор
admin admin time 01:35 ← 23 июля 2009 #
Играючи удалил своей же комментарий :-)
Собственный шаблонизатор есть просто обертка для PHP. В итоге подключаются уже скомпилированные файлы, поэтому производительность равна таковой у PHP-шаблонов за исключением времени на проверку даты последнего изменения файла через функцию filemtime.
andyduke andyduke time 02:41 ← 23 июля 2009 #
А если так? И кода мало и нативный шаблонизатор.
<? if(!empty($show)):?> <? foreach($nodes as $node):?> <div class="node" <?=html::attr('id', $node->id);?>> <?=html::value($node->body, '');?> </div> <? endforeach;?> <? endif;?>
Где html — это класс со статическими методами-хелперами:
class html { public static function attr($name, $value) { if (!empty($value)) { return $name . '="' . htmlspecialchars($value) . '"'; } return ''; } public static function value($value, $default = '') { return !empty($value) ? $value : $default; // а можно даже так: return htmlspecialchars(!empty($value) ? $value : $default); } }
BigShark BigShark time 02:47 ← 23 июля 2009 #
php-native смотрится лучше чем шаблонизатор, только надо несколько упростить код.
<? if(@$nodes ): ?>//Мне кажется так просто красивей, хотя на любителя. И также я стал проверять массив а не переменную $show, то есть массив заполнен значит выводим. <? foreach($nodes as $node): ?> <div class="node" id="<?=$node->id; ?>"> //Убраем все лишнее <?=$node->body;?>//Убраем все лишнее </div> <? endforeach; ?> <? endif; ?> И заменяем "<?php" на "<?",";?>" на "; ?>" и "<? echo " на "<?="
Не встречал еще хостинг который не умеет работать с коротким синтаксисом, так что шанс что таки шаблоны не будут работа очень мало.
И на всякий случай в CI есть скрипт который короткий синтаксис на обычный.
При выводе не надо проверять переменный, они всегда должны быть созданы и заполнены.
Поздравляю с Женитьбой. Удачи и любви вам.
andyduke +1
Fr3nzy Fr3nzy time 07:40 ← 23 июля 2009 #
По поводу коротких тегов -php:
никто не мешает вам их использовать, ибо это, по сути, даже не шаблонизатор, это стандартные функции языка
просто у кого-то могут быть запрещены короткие теги, у кого-то разрешены, но полные теги (<?php ?>) разрешены у всех
Автор
admin admin time 11:43 ← 23 июля 2009 #
Друзья, употребляя тег <code>, не забывайте указывать ему класс равный тому языку, синтаксис которого скрипт должен подсвечивать.
Например, <code class='php'>.
BigShark BigShark time 14:16 ← 23 июля 2009 #
Желательно сделать php по умолчанию.
или хотя бы дописывать в тег code строку class=""
Автор
admin admin time 14:31 ← 23 июля 2009 #
Обновил в SVN, теперь при вставке с редактора пишется class='php'.
Также установил подсветку синтаксиса PHP при запуске Lighter, если не указано обратного через класс.
aktuba aktuba time 14:34 ← 23 июля 2009 #
Вопрос админу: как я понял, ты резко сократил потребляемые ресурсы движком. Как удалось добиться? У меня с CI такого никак не получается — меньше 2.5Мб на страницу никак. Мемкеш юзаю, запросы оптимизировал дальше некуда (вроде), шаблоны использую нативные…
Автор
admin admin time 14:38 ← 23 июля 2009 #
Актуб, ты пробовал ставить на сервер eAccelerator? :-)
  • Частично переписал ядро (загрузку компонентов), используя современные технологии (PHP SPL, autoload).
  • Денормализировал сложные запросы к БД, подкрепляя данные своевременно обновляемым кешем.
aktuba aktuba time 14:40 ← 23 июля 2009 #
Неа, не пробовал. Под денвер возможно, чтобы потестить?
>Частично переписал ядро (загрузку компонентов), используя современные технологии (PHP SPL, autoload).
Не подскажешь в каких файлах изменения? Поковырял бы тоже…
Автор
admin admin time 14:46 ← 23 июля 2009 #
Собственно, для чего нужен SVN? Чтобы все могли проследить изменения :-)
Основные изменения в "/engine/libraries/[Controller|Loader|Model].php".
Есть Google для поиска ответов на такие вопросы.
Вообще, скажу прямо, что быстрее будет найти ответы в туториалах и документации к PHP, чем получить их от знающего человека при переписке. Разумеется, речь идет о веренице вопросов следующих друг за другом, а не об одном четко сформулированном вопросе.
aktuba aktuba time 15:15 ← 23 июля 2009 #
eAccelerator рулит =)))) Вместо 3.2Мб, теперь 0.53Мб =).
Автор
admin admin time 15:20 ← 23 июля 2009 #
Знание — сила.
JiLiZART JiLiZART time 14:16 ← 24 июля 2009 #
щя поковыряем =)