Code Monkey home page Code Monkey logo

php-templates's Introduction

PHP templates - An extremely simple, yet wonderful, PHP template system

Latest Version Latest Unstable Version Software License Build Status Coverage Status Quality Score

In the PHP world we have wonderful template engines/systems like Twig and Plates. If you need features like inheritance, extensions, built-in helpers etc. you should go with one of those.

On the other hand, if you just want to be able to create a PHP template like this:

<h1>Hello <?=$name?></h1>
<p>Today's date is <?=$date->format('d.m.Y')?></p>

Then this library is for you.

Installation

$ composer require setono/php-templates

Usage

In this example I assume your templates are here: templates/php and you have a template like this:

<!-- templates/php/App/hello.php -->
<h1>Hello <?=$name?></h1>

The path of this template is divided into three parts: templates/php is the path added to the engine. App is the namespace. hello is the template name.

Keep this in mind when looking at the rendering of this template:

<?php
// render.php

use Setono\PhpTemplates\Engine\Engine;

$engine = new Engine();
$engine->addPath('templates/php');

echo $engine->render('@App/hello', [
    'name' => 'John Doe',
]);

This will output:

<h1>Hello John Doe</h1>

Override templates

If you want to override templates, it is very straight forward. Let's set up the engine first:

<?php
// override.php

use Setono\PhpTemplates\Engine\Engine;

$engine = new Engine();
$engine->addPath('vendor/namespace/src/templates/php'); // The path is added with a default priority of 0
$engine->addPath('templates/php', 10); // Here we set the priority higher than the vendor added path

Here is the template we want to override:

<!-- vendor/namespace/src/templates/php/ThirdPartyNamespace/hello.php -->
<h1>Hi <?=$name?>! This template is not rendered, since it is overridden</h1>

And here is the template that will override the previous one:

<!-- templates/php/ThirdPartyNamespace/hello.php -->
<h1>Hi <?=$name?>! This template is rendered, yeah!</h1>

Notice that we override templates by adding a directory with the same name as the original directory. In this case: ThirdPartyNamespace.

<?php
echo $engine->render('@ThirdPartyNamespace/hello', [
    'name' => 'John Doe',
]);

This will output:

<h1>Hi John Doe! This template is rendered, yeah!</h1>

php-templates's People

Contributors

loevgaard avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.