grifix / view
This package is abandoned and no longer maintained.
No replacement package was suggested.
Simple template engine with slots and inheritance support
dev-main
2022-12-06 07:44 UTC
Requires
- php: ^8.1
- grifix/array-wrapper: dev-main
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2023-07-26 07:07:45 UTC
README
A very simple template engine with slots and inheritance support based on PHP.
Installation
composer require grifix/view
Usage
Basic template
template.php
<?php
declare(strict_types=1);
use \Grifix\View\TemplateInterface;
/** @var $this TemplateInterface */
?>
<h1><?=$this->getVar('title')?></h1>
<p><?=$this->getVar('content')?></p>
index.php
declare(strict_types=1);
use \Grifix\View\ViewFactory;
echo ViewFactory::create('/path/to/views')->createView('template.php')->render([
'title' => 'Hello',
'content' => 'Hello world!'
])
will render:
<h1>Hello</h1>
<p>Hello world!</p>
Inheritance
layout.php
<?php
declare(strict_types=1);
use \Grifix\View\TemplateInterface;
/** @var $this TemplateInterface */
?>
<h1><?php $this->startSlot('title')?>Hello<?php $this->endSlot()?></h1>
<p><?php $this->startSlot('content')?>Hello world<?php $this->endSlot()?></p>
template.php
<?php
declare(strict_types=1);
use \Grifix\View\TemplateInterface;
/** @var $this TemplateInterface */
$this->inherits('layout.php');
?>
<?php $this->startSlot('content');?>
Lorem ipsum dolor sit amet, consectetur
<?php $this->endSlot();?>
index.php
declare(strict_types=1);
use Grifix\View\ViewFactory;
echo ViewFactory::create('/path/to/views')->createView('template.php')->render();
Will render:
<h1>Hello</h1>
<p>Lorem ipsum dolor sit amet, consectetur</p>
Inheritance with parent slot content
template.php
<?php
declare(strict_types=1);
use \Grifix\View\TemplateInterface;
/** @var $this TemplateInterface */
$this->inherits('layout.php');
?>
<?php $this->startSlot('content');?>
<?=$this->renderParenSlot()?>
Lorem ipsum dolor sit amet, consectetur
<?php $this->endSlot();?>
will render:
<h1>Hello</h1>
<p>Hello world! Lorem ipsum dolor sit amet, consectetur</p>