Формат документации

Формат документации

Документация Symfony использует reStructuredText в качестве языка разметки, и Sphinx для генерирования документации в форматах, читаемых конечными пользователями, вроде HTML и PDF.

reStructuredText

reStructuredText это синтаксис разметки простого текста, схожий с Markdown, но намного более строгий в синтаксисе. Если вы новичок в reStructuredText, потратьте немного времени на то, чтобы ознакомиться с этим форматом, прочитав существующий исходный код документации Symfony.

Если вы хотите узнать больше об этом формате, посмотрите туториал reStructuredText Primer и Справочник reStructuredText.

Caution

Если вы знакомы с Markdown, будьте осторожны, так как вещи иногда очень похожи, но отличаются:

  • Списки начинаются с начала строки (отступы запрещены);
  • Блоки линейного кодирования используют двойные кавычки (``like this``).

Sphinx

Sphinx - это система построения, которая предоставляет инструменты для создания документации из документов reStructuredText. Таким образом, она добавляет новые директивы и интерпретированные текстовые роли в стандартную разметку reST. Прочтит больше о Конструкциях разметки Sphinx.

Выделение синтаксиса

PHP является маркером синтаксиса, применяемым ко всем блокам кода. Вы можете изменить это с помощью директивы code-block:

1
2
3
.. code-block:: yaml

    { foo: bar, bar: { foo: bar, bar: baz } }

Note

Кроме всех основных языков программирования, маркер синтаксиса поддерживает все виды языков разметки и конфигурации. Промотрите список поддерживаемых языков на вебсайте маркера синтаксиса.

Блоки конфигурации

Каждый раз, когда вы добавляете пример конфигурации, используйте директиву configuration-block, чтобы показать конфигурацию во всех поддерживаемых форматах конфигурации (PHP, YAML и XML). Пример:

1
2
3
4
5
6
7
8
9
10
11
12
13
.. configuration-block::

    .. code-block:: yaml

        # Конфигурация на YAML

    .. code-block:: xml

        <!-- Конфигурация на XML -->

    .. code-block:: php

        // Конфигурация на PHP

Предыдущий отрезок reST отображается так:

  • YAML
  • XML
  • PHP
1
# Конфигурация на YAML

Текущий список поддерживаемых форматов следующий:

?????? ???????? ??????????? ??? ??? ???????????
html HTML
xml XML
php PHP
yaml YAML
twig ?????? ???????? Twig
html+twig ???????? Twig, ????????? ? HTML
html+php PHP-???, ????????? ? HTML
ini INI
php-annotations PHP-?????????

Добавление ссылок

Наиболее распространённым типом ссылок являются внутренние ссылки на другие страницы документации, которые используют следующий синтаксис:

1
:doc:`/absolute/path/to/page`

Имя страницы не должно содержать расширение файла (.rst). Например:

1
2
3
4
5
:doc:`/controller`

:doc:`/components/event_dispatcher`

:doc:`/configuration/environments`

Название связанной страницы будет автоматически использовано в качестве текста ссылки. Если вы хотите изменить это название, используйте следующий альтернативный синтаксис:

1
:doc:`Буферизация электронной почты </email/spool>`

Note

Несмотря на то, что технически это правильно, избегайте использования релятивных внутренних ссылок, как следующие, потому как они нарушают ссылки в сгенерированной PDF-документации:

1
2
3
4
5
:doc:`controller`

:doc:`event_dispatcher`

:doc:`environments`

Ссылки на API следуют другому синтаксису, где вы должны указать тип связанного источника (namespace, class или method):

1
2
3
4
5
:namespace:`Symfony\\Component\\BrowserKit`

:class:`Symfony\\Component\\Routing\\Matcher\\ApacheUrlMatcher`

:method:`Symfony\\Component\\HttpKernel\\Bundle\\Bundle::build`

Ссылки на PHP-документацию следуют очень схожему синтаксису:

1
2
3
4
5
:phpclass:`SimpleXMLElement`

:phpmethod:`DateTime::createFromFormat`

:phpfunction:`iterator_to_array`

Новые функции или изменение поведения

Если вы документируете абсолютно новую функцию или изменение, которое было сделано в Symfony, перед вашим описанием изменения, вам нужно вставить директиву .. versionadded:: 2.X и краткое описание:

1
2
3
4
.. versionadded:: 2.7
    Метод ``askHiddenResponse()`` был представлен в Symfony 2.7.

Вы также можете задать вопрос и скрыть ответ. Это, в частности [...]

Если вы документируете изменение поведения, может быть полезным кратко описать, как оно было изменено:

1
2
3
.. versionadded:: 2.7
    Функция ``include()`` - это новая функция Twig, которая доступна в
    Symfony 2.7. Pанее использовался тег``{% include %}``.

Каждый раз, когда выпускается новая младшая версия Symfony (например, 2.4, 2.5, и т.д.), создаётся новая ветка документации из ветки master. На данном этапе, все теги versionadded для версий Symfony, которые достигли конца периода содержания, будут удалены. Например, если бы Symfony 2.5 была выпущена сегодня, а 2.2 недавно достигла конца периода содержания, то теги 2.2 versionadded были бы удалены из новой ветки 2.5.