# Danky

Namespace Chevere\Danky

The Danky package provides a typed PHP template system.

👏 With this package you can create re-usable, strict, highly-testable templates that work as classes.

💡 Danky introduction

Read Danky, typed templates for PHP (opens new window) at Rodolfo's blog for a compressive introduction to this package.

# Installing

Danky is available through Packagist (opens new window) and the repository source is at chevere/danky (opens new window).

composer require chevere/danky

# Templates

A Danky template is a class extending Template:

💡 In the code below, the return is an string formatted in Heredoc (opens new window) syntax. You can also use Nowdoc (opens new window), double quoted (opens new window) and single quoted (opens new window) string literals.

<?php // Quote.php

use Chevere\Danky\Template;

class Quote extends Template
{
    public function __construct(string $text, string $author) {
        $this->render =
            <<<HTML
            <quote>"$text" --$author</quote>
            HTML;
    }
};

Templates must assign the $render property, which accepts string and Template types. When needing to render the template is easy as:

<?php
echo
    new Quote(
        text: 'Hello, world!',
        author: 'Rodolfo'
    );

Which echoes:

<quote>"Hello, world!" --Rodolfo</quote>

# Extra Features

Danky doesn't has extra features yet, but we are aware of the needs that usually sprout in the presentational layer. At this time we hope that the built-in PHP library will be enough for most use cases. Don't hesitate to open an issue (opens new window) if you need extra features.

# Escaping

Danky doesn't provide escaping functionality. You can use the built-in String Functions (opens new window) of the standard PHP library.

For example, using htmlspecialchars (opens new window):

$safe  = htmlspecialchars($string, ENT_QUOTES, 'UTF-8')

👉 We encourage you to bring your favorite safe-string package, for example voku/stringy (opens new window) or even your own.

# Filtering & Validation

Danky doesn't provide filtering functionality. You can use the built-in filter_var (opens new window) function which provides a myriad of filters (opens new window) which can be used for filtering and validation.