Caprice is PHP templating engine that aims to write clean PHP syntax along side with HTML code. caprice compiles the syntax and generate php files which means no performance loss but a clean html files with a friendly syntax.
composer require lotfio/caprice
composer test
use Caprice\Caprice;
require 'vendor/autoload.php';
$caprice = new Caprice;
// load caprice predefined directives
$caprice->loadPredefinedDirectives();
// set views location and cache location
$caprice->setCompileLocations('views', 'cache');
// helpful for development environment
$caprice->enableRecompile();
// file to compile => views/test.cap.php
// you can remove .cap.php extension for both
$compiled = $caprice->compile("test");
require $compiled; // require your compiled file
#php
$var1 = "foo";
$var2 = "bar";
echo $var1 . " and " . $var2;
#endphp
{{ " hello caprice " }}
// if statement
#if ($condition)
// logic
#endif
// if statement
#if ($condition)
// if logic
#else
// else logic
#endif
#if ($condiftion)
// if logic
#elseif ($condition2)
// elseif logic
#else
// else logic
#endif
// for in loop key only
#for ($name in $array)
{{ $name }}
#endforin
// for in loop key value
#for ($name => $age in $array)
{{ $name }} => {{ $age }}
#endforin
// for loop
#for ($i = 0; $i <= 10; $i++)
{{ $i }} <br>
#endfor
// while loop
#while ($condition)
// loop
#endwhile
// do while
#do
{{ "do something" }}
#enddo($whileCondition)
// continue & break statements
#while (TRUE)
#if(condition) #continue #endif
#if(another_condition) #break #endif
#endwhile
// include/require statements
// you can remove .cap.php extension for both
// you use . to access folder instead of /
#require("file.cap.php")
#include("file.cap.php")
// extends a base layout
// here we are extending master.cap.php from layouts folder
#extends("layouts.master")
// load a section
#yield("sectionName")
// define a section
#section("sectionName")
// section content
#endsection
// functions
// dump
#dump($variable) OR #dd($variable)
// simple directives
$caprice->directive("#test", function(){
return 'replace test directive with this string';
});
// expression directive
// example #call($var)
$caprice->directive("#call", function(string $expression, string $match, array $extras){
return '<?php call'. $expression . ';?>'; // this will evaluate to <?php call($var);\?\>
});
// class method directive
// MyDirective class should implement DirectiveInterface
$caprice->directive("#call", MyDirective::class);