Skip to content
Simple PHP template engine which is easy to use
PHP Shell Hack
Branch: develop
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.actionspanel github actions Mar 12, 2020
.github/workflows github actions Mar 12, 2020
bin package init Jan 30, 2020
src Template var default value Mar 12, 2020
tests test template and storage existance before printing anything Mar 12, 2020
.editorconfig package init Jan 30, 2020
.gitattributes package init Jan 30, 2020
.gitignore package init Jan 30, 2020
CHANGELOG.md Version bump Mar 13, 2020
LICENSE package init Jan 30, 2020
README.md Update README.md Mar 13, 2020
composer.json github actions Mar 12, 2020
composer.lock removed unused singleton package Jan 31, 2020
phpcs.xml package init Jan 30, 2020
phpunit.xml.dist package init Jan 30, 2020

README.md

Templates

BracketSpace Micropackage Latest Stable Version PHP from Packagist Total Downloads License

Micropackage logo

🧬 About Templates

Templates micropackage is very simple WordPress template engine with multi-storage support. The templates are not parsed or cached like Blade or Twig templates. It's just good ol' file loader with variable support.

💾 Installation

composer require micropackage/templates

🕹 Usage

Let's assume your template tree looks like this:

my-plugin/
├── admin/
│   └── templates/
│      ├── notice.php
│      └── settings.php
└── frontend/
    └── templates/
       ├── profile.php
       └── welcome.php

First, you need to define at least one template storage. In the above case we have two places with templates.

Micropackage\Templates\Storage::add( 'admin', $plugin_dir . '/admin/templates' );
Micropackage\Templates\Storage::add( 'frontend', $plugin_dir . '/frontend/templates' );

Then you can easily render template:

$template = new Micropackage\Templates\Template( 'frontend', 'profile', [
	'user_name' => $user_name,
	'posts'     => get_posts( [ 'author' => $user_id ] ),
] );

$template->render();

The template file could look like this:

<p>Howdy, <?php $this->the( 'user_name' ); ?></p>

<p>See your posts:</p>

<ul>
	<?php foreach ( $this->get( 'posts' ) as $post ) : ?>
		<li><?php echo $post->post_title; ?></li>
	<?php endforeach; ?>
</ul>

Accessing variables in the template file

In the template file, $this points to the template instance, which means you can access all the template methods.

The basic usage is:

$this->the( 'var_name' ); // Prints the value.
$var_name = $this->get( 'var_name' ); // Gets the value.

But you can also use the shorthand closure methods:

$the( 'var_name' ); // Prints the value.
$var_name = $get( 'var_name' ); // Gets the value.

Default variable values

When variable is not defined, you can specify its default value:

$the( 'var_name', 'Default val' );
$var_name = $get( 'var_name', 'Default val' );

Available template methods

Template class methods.

Method Description Returns
get_path() Gets full path with extension (string)
get_rel_path() Gets relative path with extension (string)
get_vars() Gets all variables (array)
clear_vars() Clears all variables $this
set((string) $var_name, (string) $value ) Sets the variable value $this
get( (string) $var_name ) Gets the variable value (mixed|null)
Null if variable with given name wasn't set
the( (string) $var_name ) Prints the variable value void
remove( (string) $var_name ) Removes the variable $this
render() Renders the template void
output() Outputs the template (string)

Template constructor params

$template = new Micropackage\Templates\Template(
	$storage_name = 'frontend',
	$template_name = 'profile',
	$variables  = [
		'var_key' => $var_value,
	]
);
Parameter Type Description
$storage_name Required Must match registered storage
$template_name Required Relative template path, example:
user/section/profile will be resolved to:
$storage_path . '/user/section/profile.php'
$variables Optional Array of template variables in format:
key => value
Can be added later with set() method

Helper functions

You can use the procedural approach as well:

// Print the template.
Micropackage\Templates\template( $storage_name, $template_name, $variables );

// Get the template output.
Micropackage\Templates\get_template( $storage_name, $template_name, $variables );

All the parameters remains the same as for the Template class.

📦 About the Micropackage project

Micropackages - as the name suggests - are micro packages with a tiny bit of reusable code, helpful particularly in WordPress development.

The aim is to have multiple packages which can be put together to create something bigger by defining only the structure.

Micropackages are maintained by BracketSpace.

📖 Changelog

See the changelog file.

📃 License

GNU General Public License (GPL) v3.0. See the LICENSE file for more information.

You can’t perform that action at this time.