A native PHP view engine for web applications.
composer require kiryi/viewyi
First initialize the engine in one of three possible ways. See Initialization for more information. Then use the provided functions as described below. Also build your templates as described in the section Templating.
__construct($config)
config
Optional configuration array or filepath to custom configuration INI file. If nothing is provided, default (config/viewyi.ini) is used (more information).
assign(string $key, $value): void
Assigns a variable to the view's data object.
key
The variable's key.
value
The variable's value. Can be string, any number, array, bool or null.
render(string $template): string
Renders the current view (HTML page). Have to be called before display
.
template
The template name to use as render base.
Returns the fully rendered view.
reset(): string
Resets the view's data object and view object. This helps dealing with large pages and especially in case of nested templates.
Returns the current fully rendered view.
display(string $headTemplate, string $title): void
Finally displays the whole HTML page. It is necessary to call render
at least once before. The rendered view is always embeded to the page's HTML body element. display
can only be called once.
headTemplate
The template name to embed into the HTML page's head element.
title
The title of the current page set to the HTML page's title element.
You have to provide the engine at least three mandatory parameters as well as an optional fourth.
baseUrl
The base URL of your web application.
imagePath
The image directory path relative to your base URL.
templateDirectory
The template directory path relative to your project's root directory.
templateFileExtension (optional)
Optional file extension of your template files, if you want to use something else than the default .php
.
The parameters can be provided by using the standard configuration file {PROJECTSROOTDIRECTORY}/config/viewyi.ini
with the following contents:
[viewyi]
baseUrl = {YOURBASEURL}
imagePath = {YOURIMAGEDIRECTORYPATH}
templateDirectory = {YOURTEMPLATEDIRECTORYPATH}
templateFileExtension = {YOURFILEEXTENSION}
Or by passing another INI file path to the engines's constructor with the same contents. The path has to be relative to your project's root directory:
$viewyi = new \Kiryi\Viewyi\Engine('{YOURCUSTOMFILEPATH}');
Or by passing an array with the three to four parameters to the constructor:
$viewyi = new \Kiryi\Viewyi\Engine([
'baseUrl' => '{YOURBASEURL}',
'imagePath' => '{YOURIMAGEDIRECTORYPATH}',
'templateDirectory' => '{YOURTEMPLATEDIRECTORYPATH}',
'templateFileExtension' => '{YOURFILEEXTENSION}',
]);
- Use native PHP templates.
- Therefore you may use any PHP alternative syntax control structure.
- Print any data you have assigned by writing
<?=$d->{YOURVARIABLEKEY}?>
. - Build links with your base URL by writing
<a href='<?=$a>{YOURLINKRELATIVETOBASEURL}'>{LINKTEXT}<a>
. - Include images by writing
<img src='<?=$i?>{YOURIMAGEINYOURIMAGEDIRECTORY}' />
.
configuration/config.ini
[viewyi]
baseUrl = https://viewyi-example.com
imagePath = img
templateDirectory = src/View
templateFileExtension = .tpl.php
src/View/head.tpl.php
<link rel='stylesheet' href='<?=$a?>css/style.min.css' />
<link rel='shortcut icon' href='<?=$i?>favicon.png' />
src/View/home.tpl.php
<img src='<?=$i?>logo.png' />
<h1><?=$d->headline?></h1>
<?php foreach($d->paragraphs as $paragraph): ?>
<p><?=$paragraph?></p>
<?php endforeach; ?>
src/Controller/HomeController.php
$viewyi = new \Kiryi\Viewyi\Engine('configuration/config.ini');
$viewyi->assign('headline', 'Welcome To My Page');
$viewyi->assign('paragraphs', [
'I want to show you the VIEWYI View Engine.',
'It is very easy to use.',
'Just follow this example.',
]);
$viewyi->render('home');
$viewyi->display('head', 'Welcome');
will generate the HTML5 page:
<!DOCTYPE html>
<html>
<head>
<link rel='stylesheet' href='https://viewyi-example.com/css/style.min.css' />
<link rel='shortcut icon' href='https://viewyi-example.com/img/favicon.png' />
<title>Welcome</title>
</head>
<body>
<img src='https://viewyi-example.com/img/logo.png' />
<h1>Welcome To My Page</h1>
<p>I want to show you the VIEWYI View Engine.</p>
<p>It is very easy to use.</p>
<p>Just follow this example.</p>
</body>
</html>