<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<sect1 id="learning.plugins.intro">
    <title>Introduction</title>

    <para>
        Zend Framework makes heavy use of plugin architectures. Plugins allow for easy extensibility
        and customization of the framework while keeping your code separate from Zend Framework's
        code.
    </para>

    <para>
        Typically, plugins in Zend Framework work as follows:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                Plugins are classes. The actual class definition will vary based on the component --
                you may need to extend an abstract class or implement an interface, but the fact
                remains that the plugin is itself a class.
            </para>
        </listitem>

        <listitem>
            <para>
                Related plugins will share a common class prefix. For instance, if you have created
                a number of view helpers, they might all share the class prefix
                "<classname>Foo_View_Helper_</classname>".
            </para>
        </listitem>

        <listitem>
            <para>
                Everything after the common prefix will be considered the <emphasis>plugin
                    name</emphasis> or <emphasis>short name</emphasis> (versus the "long name",
                which is the full classname). For example, if the plugin prefix is
                "<classname>Foo_View_Helper_</classname>", and the class name is
                "<classname>Foo_View_Helper_Bar</classname>", the plugin name will be simply
                "<classname>Bar</classname>".
            </para>
        </listitem>

        <listitem>
            <para>
                Plugin names are typically case sensitive. The one caveat is that the initial letter
                can often be either lower or uppercase; in our previous example, both "bar" and
                "Bar" would refer to the same plugin.
            </para>
        </listitem>
    </itemizedlist>

    <para>
        Now let's turn to using plugins.
    </para>
</sect1>
