Чтение RSS каналов

Форум

Открыть Ответить

Новые функции CMS и их производительность относительно версий PHP

5

5
1
01.01.2018 19:30:0001.01.2018 19:38:44
На основании опубликованной статьи: Производительность CMS относительно новых и старых версий PHP, предлагаю детально обсудить возможности новой функции шаблонизатора системы.

Старая версия с внутренним кеширование содержания
if (!function_exists("tpl_func")) {
	function tpl_func() {
		global $blockg, $theme, $conf;
		$arg = func_get_args();
		$lan = array();
		static $argc, $cach, $cont;
		if ($argc != $arg[0] || !isset($cach)) {
			$argc = $arg[0];
			$cont = get_theme_file($argc);
			if ($cont) $cach = create_function("\$arg, \$lan", "global \$blockg, \$theme, \$conf; return \"".addslashes(file_get_contents($cont))."\";");
		}
		return ($cont) ? $cach($arg, $lan) : tpl_warn("warn", sprintf(_ERRORTPL, $arg[0]), "", "", "warn");
	}
}


Вариант новой версии с внутренним кеширование содержания
if (!function_exists('setTemplateBasic')) {
	function setTemplateBasic() {
		global $blockg, $theme, $conf;
		$arg = func_get_args();
		$lan = array();
		static $argc, $cach, $cont;
		if ($argc != $arg[0] || !isset($cach)) {
			$argc = $arg[0];
			$cont = getThemeFile($argc);
			if ($cont) $cach = file_get_contents($cont);
		}
		if ($cont) eval("\$rfl = \"".addslashes($cach)."\";");
		return ($cont) ? stripslashes($rfl) : setTemplateWarning('warn', sprintf(_ERRORTPL, $arg[0]), '', '', 'warn');
	}
}


Новая функция получилась универсальной, планируется применение как для отображения списка материалов так и единичного варианта. На основании этого потребность в функции: tpl_eval() полностью отпадает.

Готов выслушать ваши пожелания и предложения относительно данного функционала.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
2
05.01.2018 23:38:1105.01.2018 23:43:19
Решил отказаться от языковой конструкций с использованием функции eval().

Основные причины

1. Связана с безопасностью, в случае реализации модулей или дополнений от сторонних разработчиков. Невнимательность которых может быть очень опасна, поскольку позволяет выполнить произвольный код. Таки образом исключим полностью данную проблему, в этом участке.

2. Быстрое понимание шаблонизатора дизайнерами и верстальщиками, с использованием общепринятых значений переменных в них, типа: {%login%}, {%menu%}, {%theme%}, {%feedback%}. Такой тип переменных используется в популярных шаблонизатарах Twig, Smarty, Volt и им подобных.

3. Более гибкая возможность, универсальность использования с функцией быстрого расширения и добавления в шаблон своих переменных.

P.S.: Сейчас ведутся работы над модификацией функционала шаблонизатора системы и его компонентов. В ближайшее время постараюсь предоставить результаты.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
3
09.01.2018 07:45:50
Смена названия функции - это опять по всей системе лазить функции переписывать? )
setTemplateBasic и setTemplateWarning - длинновато как то стало...

Ну внимательность программеров - это уже дело программеров и к системе отношения не имеет. Как бэ сами виноваты!

ЗЫ
С новым годом всех )

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
4
09.01.2018 18:12:0709.01.2018 18:17:28
Miksar, смена названий функций неизбежна, плюсов всё таки больше чем минусов. Ну а стиль программирования, это как правило, дело привычки. Долго откладывал этот процесс, но думаю что время пришло.

Я не сторонник революций, поэтому планирую постепенный, максимально безболезненный переход (с сохранением совместимости), на стандарты кодирования PSR.

Вот некоторые из правил стандарта PHP-FIG:

• Файлы с PHP кодом необходимо начинать с тэгов <?php

• В файлах с кодом PHP необходимо использовать только UTF-8 без BOM.

• Константам необходимо давать имена в верхнем регистре с символом подчёркивания в качестве разделителя: CMS_PRODUCT

• Методам/функциям необходимо давать имена в стиле setTemplateBasic (так называемый верблюжий стиль, название записывается без пробелов, каждое слово с большой буквы, кроме первого).

• Классам необходимо давать имена в стиле SetTemplateBasic (название записанное без пробелов, каждое слово в этом названии начинается с большой буквы).

Кому интересны детали, в сети достаточно информации, читайте на сайте первоисточника: Basic Coding Standard

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
5
09.01.2018 22:41:08
Понятно.
Кстати на счет переменных. Можно же не заморачиваться названиями оных, а выводить как сейчас по стилю: {%arg0%}, {%arg1%},....{%argN%}

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
6
10.01.2018 07:41:33
Да, но в этом и смысл. Переменные типа: {%arg0%}, {%arg0%} менее понятны чем: {%login%}, {%menu%}.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
7
10.01.2018 08:35:56
так оно, но теперь придется переделывать шаблоны тем. Причем не просто переписывать переменные, но менять их названия на понятные.
Например в тех же шаблонах вывода новостей мы имеем много входящих данных в функцию base().
В общем хз конечно. Переход на такие шаблоны больше подходит для версии слаеда 7. Уж больно серьезные изменения для шаблонов в целом.

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
8
10.01.2018 17:03:48
Да, конечно согласен. Но думаю что для опытного пользователя не составит особого труда переписать переменные в своей теме оформления, за основу или в качестве примера можно будет взять стандартную.

Встречный вопрос, есть ли смысл добавления в index.html переменной {%STYLE%}, для вывода стилей темы?

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.24

3.24
9
10.01.2018 23:31:51
Думаю есть. Возможны проекты, где они и не требуются. А так мы даем возможность самому выбрать - выводить или нет.

Здесь молодость бродит крылато, и старость не клонит голов.
4.2

4.2
10
11.01.2018 14:37:5311.01.2018 17:30:20
Старые шаблоны сделали не актуальными.


Версия системы: SLAED CMS 1.6 Free
Версия PHP: 4
Сервер: Сервер в интернете

УЗИ для кошек и собак в Москве.
0

0
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь