Coder Social home page Coder Social logo

easytemplate's Introduction

EasyTemplate

EasyTemplate is a PHP Template Parser that consequently seperates logic from the view. It simply replaces marked areas of an HTML file with content generated by a controller script.

Requirements

PHP 8.1.2

Installation

$ composer require dahas/easy-template 

Example

Templates are either complete HTML files or HTML segments that contain markers and slices.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>[[TITLE]]</title>
    </head>
    <body>
        <h1>[[HEADER]]</h1>
        <table class="table">
            <thead>
                <tr>
                    <th scope="col">#</th>
                    <th scope="col">NAME</th>
                    <th scope="col">AGE</th>
                    <th scope="col">CITY</th>
                </tr>
            </thead>
            <tbody>
                <!-- {{ROWS}} begin -->
                <tr>
                    <th scope="row">[[UID]]</th>
                    <td>[[NAME]]</td>
                    <td>[[AGE]]</td>
                    <td>[[CITY]]</td>
                </tr>
                <!-- {{ROWS}} end -->
            </tbody>
        </table>
    </body>
</html>

Here is how you load a template:

$template = new EasyTemplate("path/to/template.html");

Markers

Markers are placeholders. They'll be replaced with content when the HTML template gets parsed. A marker is surrounded by double square brackets, like so: [[MARKER]]

Slices

A slice is an HTML segment within a template. It is defined by two markers, one at the beginning and one at the end of the segment. Both slice-markers are wrapped twice in curly braces. You can additionally wrap them in comments:

<!-- {{ROWS}} begin -->
<tr>
    <th scope="row">[[UID]]</th>
    <td>[[NAME]]</td>
    <td>[[AGE]]</td>
    <td>[[CITY]]</td>
    <td>[[COUNTRY]]</td>
</tr>
<!-- {{ROWS}} end -->

Slices are treated like Templates. You can even put a Slice in its own HTML file.

Getting the Slice within a Template:

$slice = $this->template->getSlice("ROWS");

Loading the Slice from its own file:

$slice = new EasyTemplate("path/to/slice.html");

Parsing Markers and Slices

To replace Markers and Slices and return a valid HTML document you use the parse() method. This function takes an Array of Markers as the first and an Array of Slices as the second argument.

$template = new EasyTemplate("path/to/template.html");

$markers = [
    "TITLE" => "The title",
    "HEADER" => "Easy Template is cool!"
];

$slice = $template->getSlice("ROWS");

$rows = $slice->parse([
    "UID" => 1,
    "NAME" => "Angus Young",
    "AGE" => 66,
    "CITY" => "Melbourne",
]);

$slices = [
    "ROWS" => $rows
];

return $template->parse($markers, $slices);

easytemplate's People

Contributors

dahas 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.