Atomic view and layout engine for PHP 5.4 and above.
To use SliPHP please configure the global constant SLIPHP_VIEWS
and set it to the directory where your views, layouts and blocks are located.
composer require sbstjn/sliphp
As mentioned above, just configure the needed constant and you are good to go …
define ('SLIPHP_VIEWS', '/var/www/views/');
The folder structure inside your SLIPHP_VIEWS
path should look something like this:
/var/www/views/index.php (View)
/var/www/views/layouts/default.php (Layout)
/var/www/views/blocks/header.php (Block)
It's that simple to render a view from your SLIPHP_VIEWS
folder:
$view = new SliPHP\View('index');
die($view);
Your index.php
could look like this:
<strong>Hi!</strong>
Of course you want to have a separate file for your layout, which will be wrapped around your index
view:
$layout = new SliPHP\Layout('default');
$layout->body(new SliPHP\View('index'));
die($layout);
Your layouts/default.ph
file could look like this:
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>SliPHP</title>
<meta charset="utf-8" />
</head>
<body><?=$view->body()?></body>
</html>
As you might guess, the content of your view gehts inserted inside the body
tag. Woho, Magic …
For sure SliPHP supports loading single files and have them rendered into your views and layouts. We call them blocks, just use the ->block()
method for loading them:
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>SliPHP Example</title>
<?=$view->block('header')?>
</head>
<body><?=$view->body()?></body>
</html>
Your blocks/header.php
could look like this:
<meta charset="utf-8" />
Blocks can load other blocks as well, so feel free to move your styles and script to separate files for example:
<meta charset="utf-8" />
<?=$view->block('styles')?>
<?=$view->block('script')?>
If you want to apply a function or a list of functions to a data object, you can use the $view->apply
function to modify your data:
<strong><?=$view->apply('KATZE', 'ucfirst|strtolower')?><?=$view->apply('KATZE', 'strtolower|ucfirst')?></strong>
Will be rendered into:
<strong>katzeKatze</strong>
There is built in support for custom helper functions in SliPHP, just define your helpers like this:
$view = new SliPHP\View('index');
$view->helper('strong', function($value) {
return '<strong>' . $value . '</strong>';
});
And call them inside your views with:
<?=$view->strong('hi')?>
You can for example use this to easily include your stylesheets:
$view->helper('css', function($file) {
return '<link rel="stylesheet" href="' . $file . '" type="text/css" charset="utf-8" />';
});
Of course you can pass data to your views, SliPHP calls them Locals
…
$view = new SliPHP\View('index');
$view->set('foo', 'value');
You can access all your data using the $data
variable inside your layouts, views and of course blocks:
<?=$data->foo?>
It's also possible to share locals between your layout and your views:
$layout = new SliPHP\Layout('default');
$layout->set('foo', 'value');
$layout->body('index');
Inside your index
view you can now easily access to layout's locals:
<?=$data->foo?>
Please see CHANGELOG for more information what has changed recently.
$ composer test
Please see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please email mail@sbstjn.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.