From 2c7171a257b435c53c859ec80a548fe9b3507129 Mon Sep 17 00:00:00 2001 From: KarelWintersky Date: Mon, 5 Feb 2024 20:36:41 +0300 Subject: [PATCH] 1.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [R] изменен нэймспейс на `AJUR\Template` * [*] добавлены возвращаемые типы `void` для ряда методов --- .gitattributes | 11 +++++++ TODO.md | 60 +++++++++++++++++++++++++++++++++++++++ composer.json | 7 +++-- src/Template.php | 29 ++++++++----------- src/TemplateHelper.php | 5 ++-- src/TemplateInterface.php | 7 +++-- src/TemplatePlugins.php | 14 ++++----- 7 files changed, 101 insertions(+), 32 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..cf1ae54 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +* text=auto +* eol=lf + +.git export-ignore +.gitattributes export-ignore +.gitignore export-ignore +tests export-ignore +vendor export-ignore +makefile export-ignore +phpunit.xml export-ignore +test*.* export-ignore diff --git a/TODO.md b/TODO.md index 7c3ded9..cbea5e4 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,7 @@ # Todo +## Регистрация Smarty-плагинов + Хорошо бы дополнить этот механизм возможность регистрировать плагином произвольную функцию произвольного класса: ```php @@ -13,6 +15,8 @@ - добавить обработку параметра `@smarty_plugin_name` - имя, под которым регистрируем метод. По умолчанию совпадает с именем функции. +## Flash-messages + Добавить flash-messages, см как сделано в `slim/flash` `->setFlashMessage($code, $message)` @@ -21,3 +25,59 @@ `->assingFlashMessages($value = 'flash_messages')` +Вердикт: отказались, потому что этот механизм не имеет отношения к шаблонизатору и обертке над ним. + +## Механизм Breadcrumbs + +Имеет смысл сделать через Stack. pushBreadCumbs($url, $title) - потому что хлебные крошки у нас имеют вид: +```html +Сайт +Статьи +Конкретная статья +``` + +То есть класть в стек нужно: url + title + +```php +require_once __DIR__ . '/vendor/autoload.php'; + +$s = new \Arris\Core\Stack(); + +$s->push([ + 'url' => '/', + 'title' => 'Главная страница' +]); + +$s->push([ + 'url' => '/articles/', + 'title' => 'Все статьи' +]); + +$s->push([ + 'url' => '/articles/123/', + 'title' => 'Моя статья' +]); + +$s->reverse(); + +$string = "\n\n"; +do { + $el = $s->pop(); + + $string .= <<{$el['title']}\n +STR; +} while (!$s->isEmpty()); + +var_dump($string); +``` + +Результат: +```html +Главная страница +Все статьи +Моя статья +``` +just as planned + + diff --git a/composer.json b/composer.json index 64c3a9f..800aaaa 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ "license": "MIT", "autoload": { "psr-4": { - "AJUR\\": "src/" + "AJUR\\Template\\": "src/" } }, "authors": [ @@ -19,5 +19,8 @@ "name": "Karel Wintersky", "email": "karel.wintersky@gmail.com" } - ] + ], + "require-dev": { + "rector/rector": "^0.19.8" + } } diff --git a/src/Template.php b/src/Template.php index e09e83a..2ddf5d5 100644 --- a/src/Template.php +++ b/src/Template.php @@ -1,12 +1,10 @@ smarty; } - public function setRenderType(string $type) + public function setRenderType(string $type): void { $this->render_type = $type; } @@ -100,7 +96,7 @@ public function request($key, string $default = '') return array_key_exists($key, $this->REQUEST) ? $this->REQUEST[$key] : $default; } - public function assign($key, $value = null) + public function assign($key, $value = null): void { if (is_array($key)) { foreach ($key as $k => $v) { @@ -111,7 +107,7 @@ public function assign($key, $value = null) } } - public function setRedirect(string $uri = '/', int $code = 200) + public function setRedirect(string $uri = '/', int $code = 200): void { $this->force_redirect = $uri; $this->force_redirect_code = $code; @@ -147,19 +143,19 @@ public function makeRedirect(string $uri = null, int $code = null, bool $replace exit(0); } - $scheme = (TemplateHelper::is_ssl() ? "https://" : "http://"); + $scheme = TemplateHelper::is_ssl() ? "https://" : "http://"; $scheme = str_replace('://', '', $scheme); header("Location: {$scheme}://{$_SERVER['HTTP_HOST']}{$_uri}", $replace_headers, $_code); exit(0); } - public function setTemplate($filename = null) + public function setTemplate($filename = null): void { $this->template_file = empty($filename) ? '' : $filename; } - public function sendHeader(string $type = '') + public function sendHeader(string $type = ''): void { $content_type = empty($type) @@ -188,14 +184,14 @@ public function clean($clear_cache = true): bool return true; } - public function assignJSON(array $json) + public function assignJSON(array $json): void { foreach ($json as $key => $value) { $this->assign($key, $value); } } - public function assignRAW(string $html) + public function assignRAW(string $html): void { $this->raw_content = $html; $this->setRenderType(TemplateInterface::CONTENT_TYPE_RAW); @@ -250,12 +246,11 @@ public function render($send_header = false, $clean = false) } - public function addTitle(string $title_part) + public function addTitle(string $title_part): void { $this->titles[] = $title_part; } - public function makeTitle(string $separator = " ", bool $sort = true, bool $reverse_order = false, bool $clean_extra_spaces = true):string { $t = $this->titles; @@ -276,6 +271,6 @@ public function makeTitle(string $separator = " ", bool $sort = true, bool $reve return $t; } +} - -} \ No newline at end of file +# -eof- \ No newline at end of file diff --git a/src/TemplateHelper.php b/src/TemplateHelper.php index cf68c8c..2dc53d3 100644 --- a/src/TemplateHelper.php +++ b/src/TemplateHelper.php @@ -1,6 +1,6 @@ '; if (func_num_args()) { @@ -189,10 +189,6 @@ public static function pluralForm($number, $forms):string ); } +} - - - - - -} \ No newline at end of file +# -eof- \ No newline at end of file