Форум

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

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

5

5

1
01.01.2018 19:30:00 01.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() полностью отпадает.

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


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 38942
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

05.01.2018 23:38:11 05.01.2018 23:43:19

Решил отказаться от языковой конструкций с использованием функции eval().

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

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

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

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

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

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 38942
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

09.01.2018 07:45:50

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

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

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


Здесь молодость бродит крылато, и старость не клонит голов.
Miksar
  • Группа: Пользователи
  • Пункты: 1570
  • Регистрация: 11.05.2010
  • Пол: Мужчина
  • Из: -Чё не смеётесь? Не поняли? Это Россия!
Miksar
4.2

4.2

09.01.2018 18:12:07 09.01.2018 18:17:28

Miksar, смена названий функций неизбежна, плюсов всё таки больше чем минусов. Ну а стиль программирования, это как правило, дело привычки. Долго откладывал этот процесс, но думаю что время пришло.

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

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

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

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

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

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

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

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


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 38942
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

09.01.2018 22:41:08

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


Здесь молодость бродит крылато, и старость не клонит голов.
Miksar
  • Группа: Пользователи
  • Пункты: 1570
  • Регистрация: 11.05.2010
  • Пол: Мужчина
  • Из: -Чё не смеётесь? Не поняли? Это Россия!
Miksar
4.2

4.2

10.01.2018 07:41:33

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


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 38942
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

10.01.2018 08:35:56

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


Здесь молодость бродит крылато, и старость не клонит голов.
Miksar
  • Группа: Пользователи
  • Пункты: 1570
  • Регистрация: 11.05.2010
  • Пол: Мужчина
  • Из: -Чё не смеётесь? Не поняли? Это Россия!
Miksar
4.2

4.2

10.01.2018 17:03:48

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

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


О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
SLAED CMS
  • Группа: Клиент
  • Пункты: 38942
  • Регистрация: 30.04.2005
  • Пол: Мужчина
  • Из: Germany
SLAED CMS
3.24

3.24

10.01.2018 23:31:51

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


Здесь молодость бродит крылато, и старость не клонит голов.
Miksar
  • Группа: Пользователи
  • Пункты: 1570
  • Регистрация: 11.05.2010
  • Пол: Мужчина
  • Из: -Чё не смеётесь? Не поняли? Это Россия!
Miksar
4.2

4.2

11.01.2018 14:37:53 11.01.2018 17:30:20

Старые шаблоны сделали не актуальными.

SLAED CMS 1.6 Free
4
Сервер в интернете

УЗИ для кошек и собак в Москве.
Sunwind
  • Группа: Новички
  • Пункты: 38
  • Регистрация: 11.01.2018
Sunwind
0

0

Всего: 55 на 6 страницах по 10 на каждой странице

1 2 3 4 5 6
Открыть Ответить

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

Идеи и предложения
Обратная связь