2026-02-10 13:31:53 +00:00
# Scape Templates
2026-02-12 05:42:28 +00:00
A lightweight, standalone PHP template engine designed for simplicity, security, and performance. Scape focuses on being an **Output Engine first** , marrying pre-processed data with design while enforcing a "logic-light" philosophy.
## Features
- **Dot Notation & Bracket Access**: Effortlessly access nested objects and arrays.
- **Inheritance & Blocks**: Define base layouts and override sections in child templates.
- **Partials & Includes**: Reuse template snippets with controlled data scoping.
- **Filter Pipeline**: Transform data using built-in or custom filters (e.g., `{{ var | lower | ucfirst }}` ).
- Built-in filters: `lower` , `upper` , `ucfirst` , `currency` , `float` , `date` , `truncate` , `default` , `json` , `url_encode` , `join` , `first` , `last` , `word_count` , `keys` .
- Filters can be used in variable interpolations, `foreach` loops, and `include` tags.
- **Secure by Default**: Automatic contextual HTML escaping for all variables.
- **AST Caching**: High performance via Abstract Syntax Tree caching with automatic dev-mode invalidation.
- **Host Integration (IoC)**: Easy integration with frameworks through the reserved `host` namespace.
- **Logic-Light**: Encourages separation of concerns by supporting only necessary logic like `foreach` .
## Installation
```bash
composer require getphred/scape
```
## Quick Start
```php
use Scape\Engine;
$engine = new Engine([
'templates_dir' => __DIR__ . '/templates',
'mode' => 'debug' // or 'production'
]);
echo $engine->render('index', [
'title' => 'Welcome to Scape',
'user' => ['name' => 'Funky']
]);
```
### Basic Syntax
#### Interpolation (Escaped)
`{{ user.name }}`
#### Raw Interpolation
`{{{ raw_html }}}`
#### Loops
```html
{( foreach item in items )}
< li > {{ item }}< / li >
{( endforeach )}
```
#### Filtering
`{{ price | currency('USD') }}`
#### Advanced Expressions
`{( foreach key in user_data | keys )}`
`{[ include 'partial' with data | first ]}`
#### Inheritance
`layout.scape.php` :
```html
< html >
< title > {[ block 'title' ]}Default Title{[ endblock ]}< / title >
< body > {[ block 'content' ]}{[ endblock ]}< / body >
< / html >
```
`page.scape.php` :
```html
{[ extends 'layout' ]}
{[ block 'title' ]}My Page{[ endblock ]}
{[ block 'content' ]}
< h1 > Hello World< / h1 >
{[ endblock ]}
```
## Configuration
Scape uses environment variables or programmatic configuration:
- `SCAPE_TEMPLATES_DIR` : Default `./templates`
- `SCAPE_LAYOUTS_DIR` : Default `./templates/layouts`
- `SCAPE_PARTIALS_DIR` : Default `./templates/partials`
- `SCAPE_FILTERS_DIR` : Default `./filters`
- `SCAPE_CACHE_DIR` : Default `./.scape/cache`
- `SCAPE_MODE` : `production` (default) or `debug`
## License
MIT