+++
title = "Overview"
linkTitle = "Templates Overview"
[menu.main]
parent = "templates"
weight = 1
+++
Plates templates are very simple PHP objects. Generally you'll want to create these using the two factory methods, `make()` and `render()`, in the [engine]({{< relref "engine/overview.md" >}}). For example:
~~~ php
// Create new Plates instance
$templates = new League\Plates\Engine('/path/to/templates');
// Render a template in a subdirectory
echo $templates->render('partials/header');
// Render a template
echo $templates->render('profile', ['name' => 'Jonathan']);
~~~
For more information about how Plates is designed to be easily added to your application, see the section on [dependency injection]({{< relref "engine/overview.md#dependency-injection" >}}).
## Manually creating templates
It's also possible to create templates manually. The only dependency they require is an instance of the [engine]({{< relref "engine/overview.md" >}}) object. For example:
~~~ php
// Create new Plates instance
$templates = new League\Plates\Engine('/path/to/templates');
// Create a new template
$template = new League\Plates\Template\Template($templates, 'profile');
// Render the template
echo $template->render(['name' => 'Jonathan']);
// You can also render the template using the toString() magic method
echo $template;
~~~
## Check if a template exists
When dynamically loading templates, you may need to check if they exist. This can be done using the engine's `exists()` method:
~~~ php
if ($templates->exists('articles::beginners_guide')) {
// It exists!
}
~~~
You can also run this check on an existing template:
~~~ php
if ($template->exists()) {
// It exists!
}
~~~
## Get a template path
To get a template path from its name, use the engine's `path()` method:
~~~ php
$path = $templates->path('articles::beginners_guide');
~~~
You can also get the path from an existing template:
~~~ php
$path = $template->path();
~~~