Skip to content
This repository has been archived by the owner on Sep 28, 2018. It is now read-only.

phpgearbox/view

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Looking for maintainers, I no longer do much if any PHP dev, I have moved on, mostly work in dotnet core, node.js & golang these days. If anyone is keen to take over these projects, get in touch - [email protected]

The Blade View Gear

Build Status Latest Stable Version Total Downloads License

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 for the Blade API.

How to Install

Installation via composer is easy:

composer require gears/view:*

How to Use

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 Gears\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' => 'Brad'));

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: http://laravel.com/docs/responses#views http://laravel.com/docs/templates#blade-templating

View Scope

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.

View Include Path:

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 Gears\View(['/views/specific', '/views/generic']);

So now for the why?

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.


Developed by Brad Jones - [email protected]