Download the PHP package karelwintersky/arris.presenter without Composer

On this page you can find all versions of the php package karelwintersky/arris.presenter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package arris.presenter

Arris.Presenter - wrapper over template engine "Smarty"

Ленивая инициализация Smarty. Один инстанс может выступать «главным» для финального вывода, остальные - для промежуточных рендеров «в переменную» (HTML/JSON/RAW/Result).

Статические дефолты и фабрики

Чтобы не регистрировать каталоги/плагины/классы/хуки для каждого инстанса заново, задайте дефолты один раз и создавайте инстансы через фабрику:

Промежуточный рендер «в переменную»:

render() и хедеры

render() по умолчанию не отправляет хедеры - только возвращает строку. Отправка - только явная: render(send_headers: true) либо $template->headers->send().

renderToString() - алиас render(false), удобен для промежуточных рендеров.

Типы контента (enum ContentType)

Тип рендера задается setRenderType() и хранится как Arris\Presenter\System\ContentType (backed-string enum) — единый источник истины для хедеров контента и HTTP-статусов. Старые константы Template::CONTENT_TYPE_* сохранены как алиасы на кейсы enum (Template::CONTENT_TYPE_HTML === ContentType::HTML), так что существующий код не меняется. setRenderType() принимает и enum, и строку ('json', '404' — по tryFrom); неизвестная строка бросает InvalidArgumentException.

smarty_options:

Ключевые опции Smarty, применяемые при ленивой инициализации: setTemplateDir, setCompileDir, setForceCompile, setConfigDir (задаются либо через конструктор, либо методами-цепочками setTemplateDir() и т.п.). Произвольные нативные свойства Smarty - через setSmartyNativeOption($key, $value).

template_options:

Отключение именованных параметров для хуков позволяет избежать ошибки вида "Uncaught Error: Unknown named parameter $foo" Она возникнет в PHP8, если запись хука будет вида:

... но в обработчике хука не будет именованного параметра $foo.

Эта ошибка - следствие обратно-несовместимого изменения методов call_user_func* в PHP8: https://dev.to/seongbae/unknown-named-parameter-2gln

(In PHP 7, the keys in $params were ignored. However, in PHP 8, they are not - keys are converted to named parameters.)

Отключение ошибки достигается применением array_values() к списку параметров.

P.S. На самом деле это решается прямым указанием значений по-умолчанию в обработчике хука:

Тогда

отрабатывают корректно оба.

Комментарии Smarty и пробелы (cleanup_extra_eol)

Smarty при удалении комментария {* ... *} вырезает сам комментарий и один перевод строки после него, но пробелы перед ним остаются и прилипают к началу следующей строки вывода. Нативной опции «игнорировать строки из одних пробелов» у Smarty нет.

cleanup_extra_eol (по умолчанию true) - пост-обработка результата рендера regex'ом /^\h*\v+/m, удаляющим строки, состоящие целиком из пробелов. Поэтому он чинит только ту утечку, которая попадает в пустую строку; если комментарий идёт сразу за выводимым тегом и после него нет перевода строки, пробелы прилипают к строке с содержимым и regex их не видит.

Надёжный паттерн шаблона - каждый комментарий на своей строке обязательно завершать пустой строкой:

Альтернатива - комментарий от колонки 0 (без отступа): тогда прилипать нечему.

FlashMessages

Класс реализует паттерн flash-сообщений (наследие Slim Flash) с двумя очередями:

Получить: getMessages() (все), getMessage($key, $default) (все по ключу), getFirstMessage($key, $default) (первое по ключу), hasMessage($key). Очистка: clearMessages() / clearMessage($key).

Если ключ не нужен (одна очередь) - ключ можно опустить: один параметр трактуется как сообщение в дефолтный ключ FlashMessages::DEFAULT_KEY ('flash'):

Ключ ('flash', 'errors', 'success', ...) позволяет в одной сессии держать несколько независимых очередей сообщений. Если очередь всегда одна - везде работает единый DEFAULT_KEY.

Синглтон getInstance() работает только с $_SESSION (иначе RuntimeException). Альтернатива - своё хранилище: new FlashMessages($storage), где $storage - массив или \ArrayAccess (по ссылке).

Meta

Мета-данные веб-страницы (стандартные теги, OpenGraph, Twitter Cards). Экземпляр Meta создаётся презентером eagerly и доступен как $template->meta (сбрасывается в fork()):

Стандартные: title, description, keywords, robots, canonical, author. OpenGraph: og:type (по умолчанию website), og:title, og:description, og:image, og:url, og:site_name, og:locale (ru_RU), og:locale:alternate (несколько - addOgLocaleAlternate()). Twitter Cards: twitter:card (summary), twitter:image. Произвольные теги - addCustom($name, $content).

Fallback, если OG не задан явно: og:title <- title, og:description <- description, og:url <- canonical; twitter:title/description берут те же значения, twitter:image <- og:image.

render() возвращает строку <title> + <meta> + <link rel="canonical">, экранируя значения через htmlspecialchars(ENT_QUOTES). Теги выводятся по одному на строку; первая строка без отступа, каждая последующая получает префикс из $indent символов $char (render(int $indent = 4, string $char = ' ')). Так блок выравнивается по отступу шаблона:

Очистка - clear(). Реализует MetaInterface, доступен и автономно: new Meta().


All versions of arris.presenter with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
ext-json Version *
ext-mbstring Version *
smarty/smarty Version v4.5.7
karelwintersky/arris.entity Version ^2
psr/log Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package karelwintersky/arris.presenter contains the following files

Loading the files please wait ...