Мелкий пишет:В целом: не используйте static там где это не нужно. (сейчас прибежит LIME и скажет "никогда не используйте static")
Я люблю статик за то, что код становится как мне кажется более лаконичным, без создания экземпляра класса там где не нужно хранить каких то итогов или использовать его промежуточные результаты многократно.
Мелкий пишет:Раз ищите теги всё равно регуляркой - сразу регуляркой их и заменяйте: preg_replace_callback. Зачем их потом искать ещё раз?
Мелкий пишет:Взяли за основу синтаксис query param - ну и парсите их нативными средствами: parse_str
согласен, исправлюсь
Мелкий пишет:Ни в коем случае. Это дико жрёт CPU.
а вот тут не совсем понял, что именно будет давать нагрузку?
К примеру если контент динамический, есть несколько десятков типов страниц (страница товара, страница html, страница категорий, страница новостей и мало ли еще какие) для генерации я планировал использовать этот класс, сначала на уровне шаблона, а потом на уровне крупных элементов в теле страницы (сомневаюсь что их будет больше 1-5 на одной странице).
В любом случае можно задействовать кэширование, но это уже другая песня. Интересно где именно будет цп грузиться я тоже думал об этом, но недопер видимо)) регулярка шустрая тем более искать там немного потом всё по сути переходит на switch и уже по нужной ветке верстается в момент. Или не так?
(Добавление)
PS: есть еще вариант например в ленте новостей прогонять через шаблон каждую новость к примеру может тогда возрастет нагрузка? хотя не знаю
esterio пишет:тоже когда-то страдал той же фигней и понял что лучше использовать тот же твиг и будет мне счастье. Вот почему я бы Вам рекомендовал использовать готовые решения. Но если рука чешеться написать хоть и не такое функциональное но свое, то вперед. да функционал там широкий и часто не востребованный, я интересуюсь готовыми решениями, однако часто они дают непредсказуемую нагрузку (хотя и достаточно редко и даже когда дают бывает, что от кривых рук, а не из-за решения)
(Добавление)
Использовал советы и совсем лаконично получилось, правда от статиков не ушел) ну уж очень они мне нравятся
PHP:
скопировать код в буфер обмена
class TemplateLoader { /** * @param $template string (if load=true then use file_get_contents for $template) * @param bool|true $load * @return string (ready template) */ static $cashResults = []; static public function loadTemplate($template, $load = true) { if($load) { $t = $template; if(!$template) { throw new \LogicException (sprintf('Template was not found (%)', $t)); } } return $template; } static protected function executeCommand($commandName, $params = []) { return '{%commnd was not found%}'; } static private function re($fullCommand) { $fullCommand = trim($fullCommand[0], '{}%'); if(isset(self::$cashResults[$fullCommand])) { return self::$cashResults[$fullCommand]; }else{ return '{syntax error}'; }else{ return static::executeCommand($commandName, $params); } } } }
(Отредактировано автором: 02 Марта, 2016 - 18:48:20)
|