Преглед на файлове

[DOCUMENTATION] Russian:
- Sync
- Added new translation

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@15709 44c647ce-9c0f-0410-b52a-842ac1e357ba

irina преди 16 години
родител
ревизия
06653d52a1
променени са 2 файла, в които са добавени 595 реда и са изтрити 164 реда
  1. 499 0
      documentation/manual/ru/module_specs/Zend_Loader-Autoloader.xml
  2. 96 164
      documentation/manual/ru/module_specs/Zend_Loader.xml

+ 499 - 0
documentation/manual/ru/module_specs/Zend_Loader-Autoloader.xml

@@ -0,0 +1,499 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<sect1 id="zend.loader.autoloader">
+    <title>Автозагрузчик</title>
+
+    <para>
+        <classname>Zend_Loader_Autoloader</classname> представляет собой
+        комплексное решение для автозагрузки. Он разрабатывался для следующих
+        целей:
+    </para>
+
+    <itemizedlist>
+        <listitem><para>
+            Предоставление настоящего автозарузчика пространств имен
+            (предыдущие реализации перехватывали все пространства имен подряд).
+        </para></listitem>
+
+        <listitem><para>
+            Возможность регистрации любых обратных вызовов в качестве
+            автозагрузчиков и управления ими как стеком (на момент написания
+            данного текста он позволяет обойти некоторые проблемы с
+            <code>spl_autoload</code>,
+            которые не позволяют заново регистрировать обратные вызовы,
+            использующие методы экземпляра).
+        </para></listitem>
+
+        <listitem><para>
+            Возможность оптимистического сопоставления (optimistic matching)
+            пространств имен для более быстрого определения пути к подключаемому
+            классу.
+        </para></listitem>
+    </itemizedlist>
+
+    <para>
+        <classname>Zend_Loader_Autoloader</classname> реализован в виде
+        синглетона, что делает его доступным из любого места.
+        Это дает возможность регистрировать дополнительные автозагрузчики
+        в любой момент выполнения, когда это необходимо.
+    </para>
+
+    <sect2 id="zend.loader.autoloader.usage">
+        <title>Использование автозагрузчика</title>
+
+        <para>
+            Когда экземпляр автозагрузчика извлекается в первый раз,
+            он регистрирует себя через <code>spl_autoload</code>.
+            Вы извлекаете экземпляр, используя метод <code>getInstance()</code>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$autoloader = Zend_Loader_Autoloader::getInstance();
+]]></programlisting>
+
+        <para>
+            По умолчанию автозагрузчик сконфигурирован с тем, чтобы
+            соответствовать пространствам имен "Zend_" и "ZendX_".
+            Если у вас есть есть своя библиотека, которая используют
+            собственное пространство имен, то вы можете зарегистрировать его
+            в автозагрузчике, используя метод <code>registerNamespace()</code>.
+            Например, если ваша библиотека представлена префиксом "My_", то вы
+            можете сделать это следующим образом:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$autoloader->registerNamespace('My_');
+]]></programlisting>
+
+        <note>
+            <title>Префиксы пространств имен</title>
+
+            <para>
+                Обратите внимание, что предыдущий пример использует в
+                качестве префикса "My_", а не "My". Это из-за того, что
+                <classname>Zend_Loader_Autoloader</classname> задуман как
+                загрузчик общего назначения, и не предполагает,
+                что префикс пространства имен должен включать в себя знак
+                подчеркивания. Если ваше пространство имен классов
+                включает в себя знак подчеркивания, то вы должны указывать его
+                при регистрации вашего пространства имен.
+            </para>
+        </note>
+
+        <para>
+            Вы можете также регистрировать любые обратные вызовы для
+            автозагрузки, опционально с определенным пространством имен (или
+            группой пространств имен).
+            <classname>Zend_Loader_Autoloader</classname> будет искать
+            соответствие им до того, как использовать свой встроенный
+            механизм автозагрузки.
+        </para>
+
+        <para>
+            Например, вам можете захотеть использовать одну или более
+            компонент из eZcomponents в своем приложении на основе
+            Zend Framework. Для того, чтобы использовать возможности
+            eZcomponents по автозагрузке, добавьте его автозагрузчик в стек,
+            используя <code>pushAutoloader()</code>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$autoloader->pushAutoloader(array('ezcBase', 'autoload'), 'ezc');
+]]></programlisting>
+
+        <para>
+            Это говорит автозагрузчику, чтобы он использовал автозагрузчик
+            eZcomponents для классов, начинающихся с "ezc".
+        </para>
+
+        <para>
+            Вы можете использовать метод <code>unshiftAutoloader()</code>
+            для добавления автозагрузчика в начало цепочки автозагрузчиков.
+        </para>
+
+        <para>
+            По умолчанию <classname>Zend_Loader_Autoloader</classname> не
+            подавляет ошибки при использовании его внутреннего автозагрузчика,
+            который использует <classname>Zend_Loader::loadClass()</classname>.
+            В большинстве случаев это именно то, чего вы хотите.
+            Тем не менее, могут быть случаи, когда может потребоваться подавлять
+            их. Вы можете сделать это, используя метод
+            <code>suppressNotFoundWarnings()</code>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$autoloader->suppressNotFoundWarnings(true);
+]]></programlisting>
+
+        <para>
+            И наконец, иногда может потребоваться, чтобы автозагрузчик загружал
+            все пространства имен. Например, библиотеки PEAR не используют
+            общего пространства имен, что делает указание отдельных
+            пространств имен затруднительным, если используется много компонент
+            из PEAR. Вы можете использовать метод
+            <code>setFallbackAutoloader()</code>
+            для того, чтобы данный автозагрузчик был универсальным для всех
+            пространств имен:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$autoloader->setFallbackAutoloader(true);
+]]></programlisting>
+    </sect2>
+
+    <sect2 id="zend.loader.autoloader.interface">
+        <title>Итерфейс автозагрузчика</title>
+
+        <para>
+            Кроме возможности указывать любые обратные вызовы в качестве
+            автозагрузчиков, Zend Framework предоставляет интерфейс,
+            который классы автозагрузчиков могут реализовывать -
+            <classname>Zend_Loader_Autoloader_Interface</classname>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+interface Zend_Loader_Autoloader_Interface
+{
+    public function autoload($class);
+}
+]]></programlisting>
+
+        <para>
+            Используя этот интерфейс, вы можете передавать экземпляр
+            класса методам <classname>Zend_Loader_Autoloader</classname>-а
+            <code>pushAutoloader()</code> и <code>unshiftAutoloader()</code>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// Предполагается, что Foo_Autoloader реализует Zend_Loader_Autoloader_Interface:
+$foo = new Foo_Autoloader();
+
+$autoloader->pushAutoloader($foo, 'Foo_');
+]]></programlisting>
+    </sect2>
+
+    <sect2 id="zend.loader.autoloader.reference">
+        <title>Справка по автозагрузчику</title>
+
+        <para>
+            Ниже приведено руководство по методам, доступным в классе
+            <classname>Zend_Loader_Autoloader</classname>.
+        </para>
+
+        <table id="zend.loader.autoloader.reference.api">
+            <title>Методы Zend_Loader_Autoloader-а</title>
+            <tgroup cols="4">
+                <thead>
+                    <row>
+                        <entry>Метод</entry>
+                        <entry>Возвращаемое значение</entry>
+                        <entry>Параметры</entry>
+                        <entry>Описание</entry>
+                    </row>
+                </thead>
+                <tbody>
+                    <row>
+                        <entry><code>getInstance()</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry>Нет</entry>
+                        <entry><para>
+                            Возвращает экземпляр-синглетон класса
+                            <classname>Zend_Loader_Autoloader</classname>.
+                            При первом извлечении он регистрирует
+                            себя через <code>spl_autoload</code>.
+                            Этот метод является статическим.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>resetInstance()</code></entry>
+                        <entry><code>void</code></entry>
+                        <entry>Нет</entry>
+                        <entry><para>
+                            Устанавливает состояние экземпляра-синглетона
+                            <classname>Zend_Loader_Autoloader</classname>
+                            в его исходное состояние, отменяя регистрацию
+                            всех обратных вызовов и всех зарегистрированных
+                            пространств имен.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>autoload($class)</code></entry>
+                        <entry><code>string|false</code></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$class</code>, <emphasis>обязательный</emphasis>.
+                                Строка с именем класса для загрузки.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Пытается определить путь к файлу по имени класса
+                            и загрузить его.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>setDefaultAutoloader($callback)</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$callback</code>, <emphasis>обязательный</emphasis>.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Указывает альтернативный обратный вызов для
+                            применения в используемой по умолчанию реализации
+                            автозагрузчика.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>getDefaultAutoloader()</code></entry>
+                        <entry><code>callback</code></entry>
+                        <entry>Нет</entry>
+                        <entry><para>
+                            Возвращает используемую по умолчанию реализацию
+                            автозагрузчика; по умолчанию это
+                            <classname>Zend_Loader::loadClass()</classname>.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>setAutoloaders(array $autoloaders)</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$autoloaders</code>, <emphasis>обязательный</emphasis>.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Устанавливает список автозагрузчиков для
+                            использования в стеке автозагрузчиков.
+                            Каждый элемент в массиве автозагрузчиков должен быть
+                            обратным вызовом PHP.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>getAutoloaders()</code></entry>
+                        <entry><code>array</code></entry>
+                        <entry>Нет</entry>
+                        <entry><para>
+                            Возвращает внутренний стек автозагрузчиков.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>getNamespaceAutoloaders($namespace)</code></entry>
+                        <entry><code>array</code></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$namespace</code>, <emphasis>обязательный</emphasis>
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Извлекает все автозагрузчики, которые были
+                            зарегистрированы для загрузки данного
+                            пространства имен.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>registerNamespace($namespace)</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$namespace</code>, <emphasis>обязательный</emphasis>.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Регистрирует одно или более пространств имен с
+                            используемым по умолчанию автозагрузчиком.
+                            Если <code>$namespace</code> является строкой,
+                            то она регистрируется как пространство имен;
+                            если же массив строк, то все они
+                            регистрируются как пространства имен.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>unregisterNamespace($namespace)</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$namespace</code>, <emphasis>обязательный</emphasis>.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Отменяет регистрацию одного или более пространств
+                            имен из используемого по умолчанию автозагрузчика.
+                            Если <code>$namespace</code> является строкой,
+                            то отменяется регистрация пространства имен
+                            под этим именем;
+                            если это массив строк, то отменяются
+                            регистрации всех пространств имен в этом массиве.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>getRegisteredNamespace()</code></entry>
+                        <entry><code>array</code></entry>
+                        <entry>Нет</entry>
+                        <entry><para>
+                            Возвращает массив пространств имен,
+                            зарегистрированных с используемым по умолчанию
+                            автозагрузчиком.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>suppressNotFoundWarnings($flag = null)</code></entry>
+                        <entry><code>boolean|Zend_Loader_Autoloader</code></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$flag</code>, <emphasis>опциональный</emphasis>.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Устанавливает или возвращает значение флага,
+                            который используется для указания того, должна ли
+                            применяемая по умолчанию реализация автозагрузчика
+                            подавлять предупреждение "файл не найден"
+                            ("file not found"). Если ему не передаются аргументы
+                            или передано значение null, то он возвращает
+                            булево значение, показывающее статус флага.
+                            Если же передано булево значение, то флаг
+                            принимает данное значение и возвращается
+                            экземпляр автозагрузчика (для возможности
+                            использования method chaining).
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>setFallbackAutoloader($flag)</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$flag</code>, <emphasis>обязательный</emphasis>.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Устанавливает значение флага, который используется
+                            для указания того, должен или нет применяемый по
+                            умолчанию автозагрузчик использоваться в качестве
+                            обратного вызова или универсального автозагрузчика
+                            для всех пространств имен.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>isFallbackAutoloader()</code></entry>
+                        <entry><code>boolean</code></entry>
+                        <entry>Нет</entry>
+                        <entry><para>
+                            Возвращает значение флага, который используется для
+                            указания того, должен или нет применяемый по
+                            умолчанию автозагрузчик использоваться в качестве
+                            обратного вызова или универсального автозагрузчика
+                            для всех пространств имен.
+                            По умолчанию его значение равно false.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>getClassAutoloaders($class)</code></entry>
+                        <entry><code>array</code></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$class</code>, <emphasis>обязательный</emphasis>.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Возвращает список автозагрузчиков, которые могут
+                            соответствовать данному классу. Если нет ни одного
+                            подходящего автозагрузчика, то возвращаются все
+                            глобальные (без привязки к пространству имен)
+                            автозагрузчики.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>unshiftAutoloader($callback, $namespace = '')</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$callback</code>, <emphasis>обязательный</emphasis>.
+                                Обратный вызов PHP
+                            </para></listitem>
+
+                            <listitem><para>
+                                <code>$namespace</code>, <emphasis>опциональный</emphasis>.
+                                Строка с префиксом имен классов, используемым в
+                                качестве пространства имен.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Добавляет конкретную реализацию автозагрузчика
+                            в начало внутреннего стека автозагрузчиков. Если
+                            было передано пространство имен, то оно будет
+                            использовано для оптимистического сопоставления
+                            (optimistic matching), иначе автозагрузчик будет
+                            использоваться в качестве глобального.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>pushAutoloader($callback, $namespace = '')</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$callback</code>, <emphasis>обязательный</emphasis>.
+                                Обратный вызов PHP
+                            </para></listitem>
+
+                            <listitem><para>
+                                <code>$namespace</code>, <emphasis>опциональный</emphasis>.
+                                Строка с префиксом имен классов, используемым в
+                                качестве пространства имен.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Добавляет конкретную реализацию автозагрузчика
+                            в конец внутреннего стека автозагрузчиков. Если
+                            было передано пространство имен, то оно будет
+                            использовано для оптимистического сопоставления
+                            (optimistic matching), иначе автозагрузчик будет
+                            использоваться в качестве глобального.
+                        </para></entry>
+                    </row>
+
+                    <row>
+                        <entry><code>removeAutoloader($callback, $namespace = '')</code></entry>
+                        <entry><classname>Zend_Loader_Autoloader</classname></entry>
+                        <entry><itemizedlist>
+                            <listitem><para>
+                                <code>$callback</code>, <emphasis>обязательный</emphasis>.
+                                Обратный вызов PHP
+                            </para></listitem>
+
+                            <listitem><para>
+                                <code>$namespace</code>, <emphasis>опциональный</emphasis>.
+                                Строка, представляющая собой префикс имен
+                                классов (используемый в качестве пространства
+                                имен) или массив строк с префиксами.
+                            </para></listitem>
+                        </itemizedlist></entry>
+                        <entry><para>
+                            Удаляет конкретную реализацию автозагрузчика из
+                            внутреннего стека автозагрузчиков.
+                            Если предоставлено пространство (пространства) имен,
+                            то обратный вызов будет удален только для данного
+                            пространства (пространств) имен.
+                        </para></entry>
+                    </row>
+                </tbody>
+            </tgroup>
+        </table>
+    </sect2>
+</sect1>

+ 96 - 164
documentation/manual/ru/module_specs/Zend_Loader.xml

@@ -1,94 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.loader.load">
 <sect1 id="zend.loader.load">
 
 
-    <title>Динамическая загрузка файлов и классов<!--Loading Files and Classes Dynamically--></title>
+    <title>Динамическая загрузка файлов и классов</title>
 
 
     <para>
     <para>
-        Класс Zend_Loader включает в себя методы, помогающие производить
-        динамическую загрузку файлов.
-<!--
-        The Zend_Loader class includes methods to help you load files dynamically.
--->
+        Класс <classname>Zend_Loader</classname> включает в себя методы,
+        помогающие производить динамическую загрузку файлов.
     </para>
     </para>
 
 
     <tip>
     <tip>
         <title>Zend_Loader vs. require_once()</title>
         <title>Zend_Loader vs. require_once()</title>
         <para>
         <para>
-            Методы Zend_Loader лучше всего использовать, если имя файла,
-            которого нужно загрузить, является переменным - например, основано
-            на вводе пользователя или аргументе метода. Если вы загружаете файл
-            или класс, чье имя является константой, то использование Zend_Loader
+            Методы <classname>Zend_Loader</classname> лучше всего использовать,
+            когда имя файла для загрузки является переменным - например,
+            если оно базируется на данных, введенных пользователем,
+            или аргументе метода.
+            Если вы загружаете файл или класс, чье имя является постоянным,
+            то использование <classname>Zend_Loader</classname>
             не дает каких-либо преимуществ по сравнению использованием обычных
             не дает каких-либо преимуществ по сравнению использованием обычных
             функций PHP, таких, как
             функций PHP, таких, как
             <ulink url="http://php.net/require_once"><code>require_once()</code></ulink>.
             <ulink url="http://php.net/require_once"><code>require_once()</code></ulink>.
-<!--
-            The Zend_Loader methods are best used if the filename you need to
-            load is variable.  For example, if it is based on a parameter from
-            user input or method argument.  If you are loading a file or a
-            class whose name is constant, there is no benefit to using
-            Zend_Loader over using traditional PHP functions such as
-            <ulink url="http://php.net/require_once"><code>require_once()</code></ulink>.
--->
         </para>
         </para>
     </tip>
     </tip>
 
 
     <sect2 id="zend.loader.load.file">
     <sect2 id="zend.loader.load.file">
 
 
-        <title>Загрузка файлов<!--Loading Files--></title>
+        <title>Загрузка файлов</title>
 
 
         <para>
         <para>
             Статический метод <code>Zend_Loader::loadFile()</code> загружает
             Статический метод <code>Zend_Loader::loadFile()</code> загружает
             файл PHP. Загружаемый файл должен содержать код PHP. Метод является
             файл PHP. Загружаемый файл должен содержать код PHP. Метод является
-            оберткой к PHP-функции <ulink url="http://php.net/include"><code>include()</code></ulink>.
-            Этот метод бросает исключение <code>Zend_Exception</code> в случае
-            неуспеха - например, если требуемый файл не существует.
-<!--
-            The static method <code>Zend_Loader::loadFile()</code> loads a PHP
-            file.  The file loaded may contain any PHP code.
-            The method is a wrapper for the PHP function
+            оберткой к PHP-функции
             <ulink url="http://php.net/include"><code>include()</code></ulink>.
             <ulink url="http://php.net/include"><code>include()</code></ulink>.
-            This method throws <code>Zend_Exception</code> on failure, for example
-            if the specified file does not exist.
--->
+            Этот метод возвращает <code>false</code> в случае
+            неуспеха - например, если требуемый файл не существует.
         </para>
         </para>
 
 
         <example id="zend.loader.load.file.example">
         <example id="zend.loader.load.file.example">
-            <title>Пример использования метода loadFile()<!--Example of loadFile() method--></title>
-            <programlisting role="php"><![CDATA[<?php
-
-Zend_Loader::loadFile($filename, $dirs=null, $once=false)
-
-?>]]></programlisting>
+            <title>Пример использования метода loadFile()</title>
+            <programlisting role="php"><![CDATA[
+Zend_Loader::loadFile($filename, $dirs=null, $once=false);
+]]></programlisting>
     </example>
     </example>
 
 
         <para>
         <para>
-            Аргумент <code>$filename</code> задает имя файла для загрузки, оно
-            не должно содержать пути к файлу. В целях безопасности производится
+            Аргумент <code>$filename</code> задает имя файла для загрузки, он
+            не должен содержать путь к файлу. В целях безопасности производится
             проверка <code>$filename</code>. <code>$filename</code> должен
             проверка <code>$filename</code>. <code>$filename</code> должен
             содержать только алфавитно-цифровые символы, тире ("-"), знак
             содержать только алфавитно-цифровые символы, тире ("-"), знак
             подчеркивания ("_") и точку ("."). На аргумент <code>$dirs</code>
             подчеркивания ("_") и точку ("."). На аргумент <code>$dirs</code>
             эти ограничения не распространяются.
             эти ограничения не распространяются.
-<!--
-            The <code>$filename</code> argument specifies the filename to load,
-            which must not contain any path information.
-            A security check is performed on <code>$filename</code>.
-            The <code>$filename</code> may only contain alphanumeric characters,
-            dashes ("-"), underscores ("_"), or periods (".").
-            No such restriction is placed on the <code>$dirs</code> argument.
--->
         </para>
         </para>
 
 
         <para>
         <para>
-            <code>$dirs</code> задает директории для поиска файла. Если он равен
+            Аргумент <code>$dirs</code> задает директории, в которых должен
+            производиться поиск файла. Если его значение равно
             <code>NULL</code>, то для поиска используется только
             <code>NULL</code>, то для поиска используется только
-            <code>include_path</code>. Если он является строкой или массивом, то
-            файл сначала ищется в данной директории (директориях) и затем в
-            <code>include_path</code>.
-<!--
-            The <code>$dirs</code> argument specifies directories to search for
-            the file.  If <code>NULL</code>, only the <code>include_path</code>
-            is searched.  If a string or an array, the directory or directories
-            specified will be searched, and then the <code>include_path</code>.
--->
+            <code>include_path</code>. Если его значение является строкой или
+            массивом, то файл сначала ищется в данной директории (директориях),
+            а затем в <code>include_path</code>.
         </para>
         </para>
 
 
         <para>
         <para>
@@ -97,55 +68,36 @@ Zend_Loader::loadFile($filename, $dirs=null, $once=false)
             загрузки файла использует PHP-функцию
             загрузки файла использует PHP-функцию
             <ulink url="http://php.net/include"><code>include_once()</code></ulink>,
             <ulink url="http://php.net/include"><code>include_once()</code></ulink>,
             иначе используется функция <ulink url="http://php.net/include_once"><code>include()</code></ulink>.
             иначе используется функция <ulink url="http://php.net/include_once"><code>include()</code></ulink>.
-<!--
-            The <code>$once</code> argument is a boolean.  If <code>TRUE</code>,
-            <code>Zend_Loader::loadFile()</code> uses the PHP function
-            <ulink url="http://php.net/include"><code>include_once()</code></ulink>
-            for loading the file, otherwise the PHP function
-            <ulink url="http://php.net/include_once"><code>include()</code></ulink>
-            is used.
--->
         </para>
         </para>
 
 
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.loader.load.class">
     <sect2 id="zend.loader.load.class">
 
 
-        <title>Загрузка классов<!--Loading Classes--></title>
+        <title>Загрузка классов</title>
 
 
         <para>
         <para>
             Статический метод <code>Zend_Loader::loadClass($class, $dirs)</code>
             Статический метод <code>Zend_Loader::loadClass($class, $dirs)</code>
             загружает файл PHP и затем проверяет наличие требуемого класса.
             загружает файл PHP и затем проверяет наличие требуемого класса.
-<!--
-            The static method <code>Zend_Loader::loadClass($class, $dirs)</code>
-            loads a PHP file and then checks for the existance of the class.
--->
         </para>
         </para>
 
 
         <example id="zend.loader.load.class.example">
         <example id="zend.loader.load.class.example">
-            <title>Пример использования метода loadClass()<!--Example of loadClass() method--></title>
-            <programlisting role="php"><![CDATA[<?php
-
+            <title>Пример использования метода loadClass()</title>
+            <programlisting role="php"><![CDATA[
 Zend_Loader::loadClass('Container_Tree',
 Zend_Loader::loadClass('Container_Tree',
     array(
     array(
         '/home/production/mylib',
         '/home/production/mylib',
         '/home/production/myapp'
         '/home/production/myapp'
     )
     )
 );
 );
-
-?>]]></programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
             Строка, задающая класс, преобразуется в относительный путь
             Строка, задающая класс, преобразуется в относительный путь
-            посредством замены знаков подчеркивания разделителями директорий и
-            добавления расширения '.php' в конец. В примере выше
-            'Container_Tree' преобразуется в 'Container/Tree.php'.
-<!--
-            The string specifying the class is converted to a relative path
-            by substituting directory separates for underscores, and appending
-            '.php'.  In the example above, 'Container_Tree' becomes 'Container/Tree.php'.
--->
+            посредством замены знаков подчеркивания разделителями директорий,
+            используемыми в вашей ОС, и добавления расширения '.php'. В примере
+            выше на Windows будет использоваться путь 'Container/Tree.php'.
         </para>
         </para>
 
 
         <para>
         <para>
@@ -153,24 +105,13 @@ Zend_Loader::loadClass('Container_Tree',
             <code>Zend_Loader::loadClass()</code> ищет в директориях в
             <code>Zend_Loader::loadClass()</code> ищет в директориях в
             том порядке, в котором они были определены. Загружается первый
             том порядке, в котором они были определены. Загружается первый
             найденный файл. Если файл не найден в директориях
             найденный файл. Если файл не найден в директориях
-            <code>$dirs</code>, то производится поиск в include_path.
-<!--
-            If <code>$dirs</code> is a string or an array,
-            <code>Zend_Loader::loadClass()</code> searches the directories in
-            the order supplied.  The first matching file is loaded.  If the file
-            does not exist in the specified <code>$dirs</code>, then the
-            include_path for the PHP environment is searched.
--->
+            <code>$dirs</code>, то производится поиск в <code>include_path</code>.
         </para>
         </para>
 
 
         <para>
         <para>
-            Если файл не найден или класс не существует после загрузки, то
+            Если файл не найден, или класс не существует после загрузки, то
             <code>Zend_Loader::loadClass()</code> бросает
             <code>Zend_Loader::loadClass()</code> бросает
-            исключениеZend_Exception.
-<!--
-            If the file is not found or the class does not exist after the load,
-            <code>Zend_Loader::loadClass()</code> throws a Zend_Exception.
--->
+            исключение <code>Zend_Exception</code>.
         </para>
         </para>
 
 
         <para>
         <para>
@@ -178,39 +119,27 @@ Zend_Loader::loadClass('Container_Tree',
             <code>Zend_Loader::loadFile()</code>, поэтому имя класса должно
             <code>Zend_Loader::loadFile()</code>, поэтому имя класса должно
             содержать только алфавитно-цпфровые символы, тире ('-'), знак
             содержать только алфавитно-цпфровые символы, тире ('-'), знак
             подчеркивания ('_') и точку ('.').
             подчеркивания ('_') и точку ('.').
-<!--
-            <code>Zend_Loader::loadFile()</code> is used for loading, so the
-            class name may only contain alphanumeric characters and the hyphen
-            ('-'), underscore ('_'), and period ('.').
--->
         </para>
         </para>
 
 
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.loader.load.isreadable">
     <sect2 id="zend.loader.load.isreadable">
 
 
-        <title>Проверка, является ли файл доступным для чтения<!--Testing if a File is Readable--></title>
+        <title>Проверка на возможность чтения из файла</title>
 
 
         <para>
         <para>
             Статический метод <code>Zend_Loader::isReadable($pathname)</code>
             Статический метод <code>Zend_Loader::isReadable($pathname)</code>
             возвращает <code>TRUE</code>, если по заданному пути существует файл
             возвращает <code>TRUE</code>, если по заданному пути существует файл
             и он доступен для чтения, иначе возвращается <code>FALSE</code>.
             и он доступен для чтения, иначе возвращается <code>FALSE</code>.
-<!--
-            The static method <code>Zend_Loader::isReadable($pathname)</code>
-            returns <code>TRUE</code> if a file at the specified pathname exists
-            and is readable, FALSE otherwise.
--->
         </para>
         </para>
 
 
         <example id="zend.loader.load.isreadable.example">
         <example id="zend.loader.load.isreadable.example">
-            <title>Пример использования метода isReadable()<!--Example of isReadable() method--></title>
-            <programlisting role="php"><![CDATA[<?php
-
+            <title>Пример использования метода isReadable()</title>
+            <programlisting role="php"><![CDATA[
 if (Zend_Loader::isReadable($filename)) {
 if (Zend_Loader::isReadable($filename)) {
     // делаем что-либо с файлом $filename
     // делаем что-либо с файлом $filename
 }
 }
-
-?>]]></programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
@@ -218,92 +147,95 @@ if (Zend_Loader::isReadable($filename)) {
             может содержать путь к файлу. Этот метод является оберкой к
             может содержать путь к файлу. Этот метод является оберкой к
             PHP-функции
             PHP-функции
             <ulink url="http://php.net/is_readable"><code>is_readable()</code></ulink>.
             <ulink url="http://php.net/is_readable"><code>is_readable()</code></ulink>.
-            Эта функция не производит поиск в <code>include_path</code>, в то
-            время как метод <code>Zend_Loader::isReadable()</code> производит.
-<!--
-            The <code>$filename</code> argument specifies the filename to
-            check.  This may contain path information.
-            This method is a wrapper for the PHP function
-            <ulink url="http://php.net/is_readable"><code>is_readable()</code></ulink>.
-            The PHP function does not search the <code>include_path</code>,
-            while <code>Zend_Loader::isReadable()</code> does.
--->
+            Метод <code>Zend_Loader::isReadable()</code> производит поиск в
+            <code>include_path</code>, в то время как <code>is_readable()</code>
+            этого не делает.
         </para>
         </para>
 
 
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.loader.load.autoload">
     <sect2 id="zend.loader.load.autoload">
 
 
-        <title>Использование автозагрузчика<!--Using the Autoloader--></title>
+        <title>Использование автозагрузчика</title>
 
 
         <para>
         <para>
-            Класс Zend_Loader содержит метод, который вы можете регистрировать
+            Класс <classname>Zend_Loader</classname> содержит метод, который
+            можно регистрировать
             через автозагрузчик PHP SPL. <code>Zend_Loader::autoload()</code>
             через автозагрузчик PHP SPL. <code>Zend_Loader::autoload()</code>
-            является методом обратного вызова. Для удобства Zend_Loader
-            предоставляет метод <code>registerAutoload()</code> для регистрации
-            своего метода <code>autoload()</code>. Если в среде PHP отсутствует
-            расширение <code>spl_autoload</code>, то метод
-            <code>registerAutoload()</code> бросает исключение Zend_Exception.
-<!--
-            The Zend_Loader class contains a method you can register with the
-            PHP SPL autoloader.  <code>Zend_Loader::autoload()</code> is the
-            callback method.  As a convenience, Zend_Loader provides the
-            <code>registerAutoload()</code> function register its
-            <code>autoload()</code> method.  If the <code>spl_autoload</code>
-            extension is not present in your PHP environment, then
-            <code>registerAutoload()</code> method throws a Zend_Exception.
--->
+            является методом обратного вызова. Для удобства
+            <classname>Zend_Loader</classname> предоставляет метод
+            <code>registerAutoload()</code> для регистрации
+            его метода <code>autoload()</code>. Если в используемой среде
+            PHP отсутствует расширение <code>spl_autoload</code>, то метод
+            <code>registerAutoload()</code> бросает исключение
+            <classname>Zend_Exception</classname>.
         </para>
         </para>
 
 
         <example id="zend.loader.load.autoload.example">
         <example id="zend.loader.load.autoload.example">
-            <title>Пример регистрации метода обратного вызова автозагрузки<!--Example of registering the autoloader callback method--></title>
-            <programlisting role="php"><![CDATA[<?php
-
+            <title>Пример регистрации метода автозагрузки</title>
+            <programlisting role="php"><![CDATA[
 Zend_Loader::registerAutoload();
 Zend_Loader::registerAutoload();
-
-?>]]></programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
-            После регистрации метода обратного вызова автозагрузки вы можете
+            После регистрации метода автозагрузки вы можете
             ссылаться на классы из Zend Framework без их явной загрузки.
             ссылаться на классы из Zend Framework без их явной загрузки.
             Метод <code>autoload()</code> автоматически запускает метод
             Метод <code>autoload()</code> автоматически запускает метод
             <code>Zend_Loader::loadClass()</code>, когда вы ссылаетесь на класс.
             <code>Zend_Loader::loadClass()</code>, когда вы ссылаетесь на класс.
-<!--
-            After registering the Zend Framework autoload callback, you can
-            reference classes from Zend Framework without having to load
-            them explicitly.  The <code>autoload()</code> method uses
-            <code>Zend_Loader::loadClass()</code> automatically when you
-            reference a class.
--->
         </para>
         </para>
 
 
         <para>
         <para>
-            Если вы расширили класс Zend_Loader, то можете передать опциональный
-            аргумент методу <code>registerAutoload()</code>, чтобы определить
-            класс, из которого следует регистрировать метод
+            Если вы расширили класс <classname>Zend_Loader</classname>, то
+            можете передавать методу <code>registerAutoload()</code>
+            опциональный аргумент для указания
+            класса, из которого следует регистрировать метод
             <code>autoload()</code>.
             <code>autoload()</code>.
-<!--
-            If you have extended the Zend_Loader class, you can give an
-            optional argument to <code>registerAutoload()</code>, to specify
-            the class from which to register an <code>autoload()</code> method.
--->
         </para>
         </para>
 
 
         <example id="zend.loader.load.autoload.example-extended">
         <example id="zend.loader.load.autoload.example-extended">
-            <title>Пример регистрации метода автозагрузки из расширенного класса<!--Example of registering the autoload callback method from an extended class--></title>
-            <programlisting role="php"><![CDATA[<?php
-
+            <title>Пример регистрации метода автозагрузки из расширенного класса</title>
+            <para>
+                В силу особенностей семантики статических функций в PHP
+                вы должны реализовать код для обоих методов
+                <code>loadClass()</code> и <code>autoload()</code>, при этом
+                <code>autoload()</code> должен вызывать
+                <code>self::loadClass()</code>. Если ваш метод
+                <code>autoload()</code> делегирует родительскому классу вызов
+                <code>self::loadClass()</code> то будет вызван метод
+                родительского класса, не подкласса.
+            </para>
+            <programlisting role="php"><![CDATA[
 class My_Loader extends Zend_Loader
 class My_Loader extends Zend_Loader
 {
 {
-    // реализация собственного функционала
+    public static function loadClass($class, $dirs = null)
+    {
+        parent::loadClass($class, $dirs);
+    }
+
+    public static function autoload($class)
+    {
+        try {
+            self::loadClass($class);
+            return $class;
+        } catch (Exception $e) {
+            return false;
+        }
+    }
 }
 }
 
 
 Zend_Loader::registerAutoload('My_Loader');
 Zend_Loader::registerAutoload('My_Loader');
-
-?>]]></programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
+        <para>
+            Регистрацию метода автозагрузки можно отменить.
+            Метод <code>registerAutoload()</code> имеет опциональный
+            второй аргумент, его значением по умолчанию является
+            <code>true</code>. Если этот аргумент равен <code>false</code>,
+            то данный метод автозагрузки удаляется из стека SPL.
+        </para>
+
     </sect2>
     </sect2>
 
 
 </sect1>
 </sect1>