Laravel Blade Views Standalone
Okay so by now hopefully you have heard of Laravel, the PHP framework that just makes things easy. So first things first full credit goes to Taylor Otwell and Brad Jones for the Blade API.
Installation via composer is easy:
composer require kesty/view: dev-master
In your legacy - non Laravel application. You can use the Laravel Blade API like so:
// Make sure you have composer included
require('vendor/autoload.php');
// Create a new View Instance
$views = new Lara\View('/path/to/my/views');
// Next you will probably want to make the view object global.
$views->globalise();
And thats it, now you can use code like the following:
echo View::make('greeting', array('name' => 'Mike'));
Where the view might look like:
<!-- View stored in /path/to/my/views/greeting.php -->
<html>
<body>
<h1>Hello, <?php echo $name; ?></h1>
</body>
</html>
For more info on the View API it's self see: https://laravel.com/docs/responses#views https://laravel.com/docs/templates#blade-templating
When you run $views->globalise();
it checks to see if the class View
exists globally. If not it use the function class_alias
to alias it's self
in much the same a Laravel Application does.
This enables us to use the View
API we are familar with.
You can provide an array of paths, instead of just one path. So in effect you can have a View Include Path. Very handy for setting up a HMVC type system. Here is an example:
$views = new Lara\View(['/views/specific', '/views/generic']);
While laravel is so awesomely cool and great. If you want to pull a feature out and use it in another project it can become difficult. Firstly you have to have an innate understanding of the IoC Container.
You then find that this class needs that class which then requires some other config variable that is normally present in the IoC when run inside a normal Laravel App but in your case you haven't defined it and don't really want to define that value because it makes no sense in your lets say legacy application.
Perfect example is when I tried to pull the session API out to use in wordpress.
It wanted to know about a booted
method, which I think comes from
Illuminate\Foundation\Application
. At this point in time I already had to
add various other things into the IoC to make it happy and it was the last straw
that broke the camels back, I chucked a coders tantrum, walked to the fridge,
grabbed another Redbull and sat back down with a new approach.
The result is this project.
Original Code by Brad Jones - [email protected] Maintained and Updated by Olubunmi Tosin - [email protected]