| Профиль | Блог (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 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;?>Меньше кода, меньше весят файлы ;)
Да и на мой взгляд не так уж страшно выглядит вся эта конструкция.
Собственный шаблонизатор есть просто обертка для PHP. В итоге подключаются уже скомпилированные файлы, поэтому производительность равна таковой у PHP-шаблонов за исключением времени на проверку даты последнего изменения файла через функцию filemtime.
<? 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); } }<? if(@$nodes ): ?>//Мне кажется так просто красивей, хотя на любителя. И также я стал проверять массив а не переменную $show, то есть массив заполнен значит выводим. <? foreach($nodes as $node): ?> <div class="node" id="<?=$node->id; ?>"> //Убраем все лишнее <?=$node->body;?>//Убраем все лишнее </div> <? endforeach; ?> <? endif; ?>И заменяем "<?php" на "<?",";?>" на "; ?>" и "<? echo " на "<?="Не встречал еще хостинг который не умеет работать с коротким синтаксисом, так что шанс что таки шаблоны не будут работа очень мало.
И на всякий случай в CI есть скрипт который короткий синтаксис на обычный.
При выводе не надо проверять переменный, они всегда должны быть созданы и заполнены.
Поздравляю с Женитьбой. Удачи и любви вам.
andyduke +1
никто не мешает вам их использовать, ибо это, по сути, даже не шаблонизатор, это стандартные функции языка
просто у кого-то могут быть запрещены короткие теги, у кого-то разрешены, но полные теги (<?php ?>) разрешены у всех
Например, <code class='php'>.
или хотя бы дописывать в тег code строку class=""
Также установил подсветку синтаксиса PHP при запуске Lighter, если не указано обратного через класс.
>Частично переписал ядро (загрузку компонентов), используя современные технологии (PHP SPL, autoload).
Не подскажешь в каких файлах изменения? Поковырял бы тоже…
Основные изменения в "/engine/libraries/[Controller|Loader|Model].php".
Есть Google для поиска ответов на такие вопросы.
Вообще, скажу прямо, что быстрее будет найти ответы в туториалах и документации к PHP, чем получить их от знающего человека при переписке. Разумеется, речь идет о веренице вопросов следующих друг за другом, а не об одном четко сформулированном вопросе.