<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<sect1 id="zend.tool.framework.introduction">
    <title>Introduction</title>

    <para>
        <classname>Zend_Tool_Framework</classname> is a framework for exposing common
        functionalities such as the creation of project scaffolds, code
        generation, search index generation, and much more. Functionality may be
        written and exposed via <acronym>PHP</acronym> classes dropped into the
        <acronym>PHP</acronym> <property>include_path</property>, providing incredible
        flexibility of implementation. The functionality may then be consumed by writing
        implementation and/or protocol-specific clients -- such as console
        clients, <acronym>XML-RPC</acronym>, <acronym>SOAP</acronym>, and much more.
    </para>

    <para>
        <classname>Zend_Tool_Framework</classname> provides the following:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <emphasis>Common interfaces and abstracts</emphasis> that allow
                developers to create functionality and capabilities that are
                dispatchable by tooling clients.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>Base client functionality</emphasis> and a concrete
                console implementation that connect external tools and
                interfaces to the <classname>Zend_Tool_Framework</classname>. The Console
                client may be used in <acronym>CLI</acronym> environments such as unix shells and
                the Windows console.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>"Provider" and "Manifest" interfaces</emphasis> that
                can be utilized by the tooling system. "Providers" represent the
                functional aspect of the framework, and define the actions that
                tooling clients may call. "Manifests" act as metadata registries
                that provide additional context for the various defined
                providers.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>An introspective loading system</emphasis> that will
                scan the environment for providers and determine what is
                required to dispatch them.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>A standard set of system providers</emphasis> that
                allow the system to report what the full capabilities of the
                system are as well as provide useful feedback. This also
                includes a comprehensive "Help System".
            </para>
        </listitem>
    </itemizedlist>

    <para>
        Definitions that you should be aware of through this manual with respect
        to <classname>Zend_Tool_Framework</classname> include:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <classname>Zend_Tool_Framework</classname> - The framework which exposes
                tooling capabilities.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>Tooling Client</emphasis> - A developer tool that connects
                to and consumes <classname>Zend_Tool_Framework</classname>.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>Client</emphasis> - The subsystem of
                <classname>Zend_Tool_Framework</classname> that exposes an interface such that
                tooling clients can connect, query and execute commands.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>Console Client / Command Line Interface /
                <filename>zf.php</filename></emphasis> - The tooling client for the command line.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>Provider</emphasis> - A subsystem and a collection of
                built-in functionality that the framework exports.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>Manifest</emphasis> - A subsystem for defining,
                organizing, and disseminating provider requirement data.
            </para>
        </listitem>

        <listitem>
            <para>
                <classname>Zend_Tool_Project</classname> Provider - A set of providers
                specifically for creating and maintaining Zend Framework-based projects.
            </para>
        </listitem>
    </itemizedlist>
</sect1>
