# Template::Modules - phpMan

## NAME
    [Template::Modules] - Template Toolkit Modules

Template Toolkit Modules
    This documentation provides an overview of the different modules that
    comprise the Template Toolkit.

  Template
    The Template module is the front-end to the Template Toolkit for Perl
    programmers.

        use Template;
        my $tt = Template->new();
        $tt->process('hello.html', message => 'Hello World');

  [Template::Base]
    The [Template::Base] module implements a base class from which the other
    Template Toolkit modules are derived. It implements common functionality
    for creating objects, error reporting, debugging, and so on.

  [Template::Config]
    The [Template::Config] module defines the configuration of the Template
    Toolkit for your system. It is an example of a *factory module* which is
    responsible for instantiating the various other modules used in the
    Template Toolkit.

    For example, the [Template::Config] module defines the $STASH package
    variable which indicates which version of the [Template::Stash] you are
    using by default. If you elected to use the faster XS stash when you
    installed the Template Toolkit, then this will be set as:

        $STASH = '[Template::Stash::XS]';

    Otherwise you'll get the regular Perl stash:

        $STASH = '[Template::Stash]';

    This approach means that other parts of the Template Toolkit don't have
    to worry about which stash you're using. They just ask the
    [Template::Config] module to create a stash of the right kind.

  [Template::Constants]
    The [Template::Constants] defines a number of constants that are used by
    the Template Toolkit.

    For example, the ":chomp" tagset defines the "CHOMP_???" constants that
    can be used with the "PRE_CHOMP" and "POST_CHOMP" configuration options.

        use [Template::Constants] ':chomp';
        my $tt = Template->new({
            PRE_CHOMP => CHOMP_COLLAPSE,
        });

  [Template::Context]
    The [Template::Context] module defines a runtime context in which
    templates are processed. A context keeps track of all the templates,
    variables, plugins, and other resources that are available (either
    directly or through delegate objects) and provides methods to fetch,
    store, and perform various operations on them.

  [Template::Document]
    The [Template::Document] module implements a compiled template document
    object. This is generated by the [Template::Parser] module.

  [Template::Exception]
    The [Template::Exception] module implements an exception object which is
    used for runtime error reporting.

  [Template::Filters]
    The [Template::Filters] module implements a filter provider. It includes
    the core collection of filters that can be used via the "FILTER"
    directive.

  [Template::Iterator]
    The [Template::Iterator] module implements a data iterator which steps
    through each item in a list in turn. It is used by the "FOREACH"
    directive. Within a "FOREACH" block, the "loop" variable always
    references the current iterator object.

        [%  FOREACH item IN list;
              IF loop.first;
                 # first item in loop
              ELSIF loop.last;
                 # last item in loop
              ELSE;
                 # any other item in loop
              END;
            END
        %]

  [Template::Namespace::Constants]
    The [Template::Namespace::Constants] module is used internally to
    represent constants. These can be resolved immediately at the point that
    a template is compiled.

  [Template::Parser]
    The [Template::Parser] module is used to parse a source template and turn
    it into Perl code which can be executed.

  [Template::Plugin]
    The [Template::Plugin] module is a base class for Template Toolkit plugins
    that can be loaded on demand from within a template using the "USE"
    directive.

  [Template::Plugins]
    The [Template::Plugins] module is the plugins provider. It loads and
    prepares plugins as and when they are requested from within a template.

  [Template::Provider]
    The [Template::Provider] module is responsible for loading, compiling and
    caching templates.

  [Template::Service]
    The [Template::Service] module implements a service layer that sits just
    behind the Template module, and just in front of a [Template::Context]. It
    handles each request to process a template (forwarded from the Template
    module). It adds any headers and/or footers (specified via the
    "PRE_PROCESS" and "POST_PROCESS" options), applies any wrapper (the
    "WRAPPER" option) and catches any errors returned (the "ERRORS" option).

  [Template::Stash]
    The [Template::Stash] module is used to fetch and store template
    variables. It implements all of the magic associated with the dot
    operator.

  [Template::Stash::XS]
    The [Template::Stash::XS] module is a high-speed implementation of
    [Template::Stash] written in C.

  [Template::Test]
    The [Template::Test] module is used to automate the Template Toolkit test
    scripts.

