rudra/view

Rudra framework

Installs: 254

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

pkg:composer/rudra/view

v25.12 2025-12-18 07:48 UTC

This package is auto-updated.

Last update: 2025-12-30 09:12:04 UTC


README

PHPunit Maintainability CodeFactor Coverage Status

Rudra-View | API

Install / Установка

composer require rudra/view

Using facade / Используя фасад

use Rudra\View\ViewFacade as View;

echo View::view("layout", [
    'content' => View::view("page", [
        'foo' => 'foo',
        'bar' => 'bar'
    ]),
]);

With caching / С кешированием

use Rudra\View\ViewFacade as View;

echo View::cache(['mainpage', "+1 day"]) ?? View::render(["layout", "mainpage"], [
    'content' => View::cache(["page_{$slug}", "+1 day"]) ?? View::view(["page", "page_{$slug}"], [
        'foo' => 'foo',
        'bar' => 'bar'
    ]),
]);

Using render, view helpers / При помощи хелперов render, view

render("layout", [
    'content' => view('page', [
        'foo' => 'foo',
        'bar' => 'bar'
    ]),
]);

With setting data through the data helper / С установкой данных через хелпер data

data([
    'content' => view("page", [
        'foo' => 'foo',
        'bar' => 'bar'
    ]),
]);

render("layout", data());

With caching / С кешированием

data([
    'content' => cache(["page_{$slug}", "+1 day") ?? view(["page", "page_{$slug}"], [
        'foo' => 'foo',
        'bar' => 'bar'
    ]),
]);

cache(["mainpage", "+1 day"]) ?? render(["layout", "mainpage"], data()));

Добавление Twig

composer require "twig/twig:^3.0"

Создаем фабрику

<?php

namespace App\Containers\Web\Factory;

use Rudra\View\View;
use Rudra\View\TwigView;
use Rudra\Container\Interfaces\FactoryInterface;

class TwigFactory implements FactoryInterface
{
    public function create(): TwigView
    {
        $view = new TwigView();
        $view->setup(
            viewPath: dirname(dirname(__DIR__)) . '/Web/UI/tmpl',
            prefix: '',
            extension: 'twig'
        );

        return $view;
    }
}

Настраиваем сервис

<?php

use Rudra\View\View;
use Rudra\View\TwigView;
use App\Containers\Web\Factory\TwigFactory;

return [
    'contracts' => [

    ],
    'services'  => [
        // View::class => function () {
        //     $view = new TwigView();
        //     $view->setup(
        //         viewPath: dirname(__DIR__) . '/Web/UI/tmpl',
        //         prefix: '',
        //         extension: 'twig'
        //     );
        //     return $view;
        // }
        // View::class => fn() => (new TwigFactory())->create(),

        View::class => TwigFactory::class,
    ]
];

License

This project is licensed under the Mozilla Public License 2.0 (MPL-2.0) — a free, open-source license that:

  • Requires preservation of copyright and license notices,
  • Allows commercial and non-commercial use,
  • Requires that any modifications to the original files remain open under MPL-2.0,
  • Permits combining with proprietary code in larger works.

📄 Full license text: LICENSE
🌐 Official MPL-2.0 page: https://mozilla.org/MPL/2.0/

Проект распространяется под лицензией Mozilla Public License 2.0 (MPL-2.0). Это означает:

  • Вы можете свободно использовать, изменять и распространять код.
  • При изменении файлов, содержащих исходный код из этого репозитория, вы обязаны оставить их открытыми под той же лицензией.
  • Вы обязаны сохранять уведомления об авторстве и ссылку на оригинал.
  • Вы можете встраивать код в проприетарные проекты, если исходные файлы остаются под MPL.

📄 Полный текст лицензии (на английском): LICENSE
🌐 Официальная страница: https://mozilla.org/MPL/2.0/