Создание документации на основе PhpDocumentor или немного про комментирование кода
PhpDocumentor автоматически генерирует из исходного кода документацию. Поэтому скрипт покажет лучший вариант только при правильном построении комментариев, именно это мы и разберем в первую очередь.
Описание идёт таким образом:
Сразу пример, который далее мы немного разберём.
file1.php
file2.php
Разбирать местоположение комментариев мы не будем, рассмотрим саму структуру.
@package Название
Логически объединяет файлы, классы, методы и тд. Долно быть сделано с умом или вообще не сделано. В PhpDocumentor возможно потом просматривать подобно категориям на сайте
@subpackage Название
Аналогично @package, но действует как подгруппа.
@access [private | protected | public]
Доступ к элементу
@author Текст
Автор элемента
@version Текст
Версия
@copyright Текст
Копирайты. Думаю всё ясно.
@category Название
Используется для организации групп. Полезно если портируете в XML формат, иначе смысла нет.
@example Сылка|Путь
Ссылка или путь на пример работы
@global тип $переменная
Наверное самый интересный тег. Дело в том что PhpDocumentor не анализирует глобальные переменные, этим тегом мы их задаём вручную. В примере можно увидеть как они задаются, и используются( функция func )
@ignore
Игнорирование элемента. Иногда удобно.
@license Url
Ссылка на лицензию
@link URL Описание ссылка
Формирование ссылки
@var Тип Описание
Используется только для переменных класса
@name $Имя
Используется в связки с @global. Для идентификации.
@param Тип $переменная Описание
Параметр, как объяснить не знаю, смотрите пример. Тип может быть любой: тип PHP, имя класса, или mixed
@return Тип
Тип возвращаемой ф-цией. Если ничего не возвращает прописывается void
@see file.ext|elementname|class::methodname()|class::$variablename|functionname()|functionname
Формирует ссылку на объект который указан
@staticvar Тип или mixed
Иногда в функциях мы задаём статические переменные. Этот тег служит для их описания
@todo Текст
Используется для описание идей которые ещё небыли воплощены в реальность.
@uses file.ext|elementname|class::methodname()|class::$variablename|functionname()|functionname
Аналогичен @see. Или я просто не увидел различия…
Так же хотел отметить что в описаниях возможно использовать теги example, tutorial, link. Задаются они так: {@тег параметр}
Вот и всё… С комментариями разобрались, можно приступать к создании документации.
Переходим сюда и качаем PhpDocumentor.
Распаковываем.
Открываем phpdoc.bat:
Находим:
SET phpCli=
Путь заменяем на местоположение файла php.exe
Не знаю как будет у Вас, но у меня половина css файлов имела формат cs, а png — pn, из-за этого в корне phpDocumentor создаём файл rename.bat, в который вписываем:
Идём в папку user, в которой создаём файл myconf.ini, в нём будет наша конфигурация к phpDocumentor:
Возвращаемся опять в корень и запускаем phpdoc.bat. После этого в исходящей директории вы увидите несколько вариантов документаций. Выбираем ту которая больше Вам по душе, и указываем только её в параметре output нашей конфигурации.
Оформить шаблон вы можете в папке phpDocumentor/Converters/Формат/Тип/templates/class.tpl, путь не точный, и зависит от выбранного формата и типа.
Если вы собираетесь использовать русский язык — читаем фикс
Описание функций, методов, файлов и переменных
Описание идёт таким образом:
/**
* Краткое описание
*
* Подробное описание
* которое возможно в несколько строк
*
* @тег значение
*/
Сразу пример, который далее мы немного разберём.
file1.php
<?php
/**
* Файл примера правильного документирования
*
* Здесь я постараюсь использовать
* максимально много тегов
* @author Lion__ <moderation@mail.ua>
* @version 1.0
* @package files
*/
/**
* Подключаем файл
*/
include_once 'file2.php';
/**
* Просто класс
* @package files
* @subpackage classes
*/
class Test2 extends Test {
/**
* Получение значения с {@link $data}
* @uses Test::data Переменная, с неё мы берём данные
* @return void
*/
function getdata()
{
$this->data = $data;
}
}
/**
* Тестовая переменная
*
* Дело в том что обычную переменную нельзя описать
* @global Test $GLOBALS['a']
* @name $a
*/
$GLOBALS['a'] = new Test;
/**
* Обычная функция
* @global Test показываем что мы используем глобальную переменную $a
* @staticvar string $var Эту переменную мы будем возвращать
* @param string $param1 Первый параметр функции
* @param string $param2 Второй параметр
* @return string
*/
function func($param1, $param2 = 'value')
{
static $var = 7;
global $a;
return $var;
}
/**
* Константа
*/
define('testing', 6);
?>
file2.php
<?php
/**
* Второй файл примера правильного документирования
*
* @author Lion__ <moderation@mail.ua>
* @version 1.0
* @package files
*/
/**
* Просто класс
* @package files
* @subpackage classes
*/
class Test {
/**
* Переменная хранящая значение типа integer
* @link _ttp://www.example.com Подробное описание. Вместо _ должно быть h
* @see setdata
* @access private
* @var integer
*/
var $data;
/**
* Установка значения
* @param integer $data Значение для установки в {@link $data}
* @uses Test::$data Для размещения данных
* @return void
*/
function setdata($data)
{
$this->data = $data;
}
}
Описание примера
Разбирать местоположение комментариев мы не будем, рассмотрим саму структуру.
- Краткое описание
- Полное описание. Может использоваться по желанию
- Теги
@package Название
Логически объединяет файлы, классы, методы и тд. Долно быть сделано с умом или вообще не сделано. В PhpDocumentor возможно потом просматривать подобно категориям на сайте
@subpackage Название
Аналогично @package, но действует как подгруппа.
@access [private | protected | public]
Доступ к элементу
@author Текст
Автор элемента
@version Текст
Версия
@copyright Текст
Копирайты. Думаю всё ясно.
@category Название
Используется для организации групп. Полезно если портируете в XML формат, иначе смысла нет.
@example Сылка|Путь
Ссылка или путь на пример работы
@global тип $переменная
Наверное самый интересный тег. Дело в том что PhpDocumentor не анализирует глобальные переменные, этим тегом мы их задаём вручную. В примере можно увидеть как они задаются, и используются( функция func )
@ignore
Игнорирование элемента. Иногда удобно.
@license Url
Ссылка на лицензию
@link URL Описание ссылка
Формирование ссылки
@var Тип Описание
Используется только для переменных класса
@name $Имя
Используется в связки с @global. Для идентификации.
@param Тип $переменная Описание
Параметр, как объяснить не знаю, смотрите пример. Тип может быть любой: тип PHP, имя класса, или mixed
@return Тип
Тип возвращаемой ф-цией. Если ничего не возвращает прописывается void
@see file.ext|elementname|class::methodname()|class::$variablename|functionname()|functionname
Формирует ссылку на объект который указан
@staticvar Тип или mixed
Иногда в функциях мы задаём статические переменные. Этот тег служит для их описания
@todo Текст
Используется для описание идей которые ещё небыли воплощены в реальность.
@uses file.ext|elementname|class::methodname()|class::$variablename|functionname()|functionname
Аналогичен @see. Или я просто не увидел различия…
Так же хотел отметить что в описаниях возможно использовать теги example, tutorial, link. Задаются они так: {@тег параметр}
Вот и всё… С комментариями разобрались, можно приступать к создании документации.
Создание документации
Переходим сюда и качаем PhpDocumentor.
Распаковываем.
Открываем phpdoc.bat:
Находим:
SET phpCli=
Путь заменяем на местоположение файла php.exe
Не знаю как будет у Вас, но у меня половина css файлов имела формат cs, а png — pn, из-за этого в корне phpDocumentor создаём файл rename.bat, в который вписываем:
@Echo Off
for /f "tokens=1,2" %%a in ('dir /s /b *.cs') do ren %%a %%~nxas
for /f "tokens=1,2" %%a in ('dir /s /b *.pn') do ren %%a %%~nxag
for /f "tokens=1,2" %%a in ('dir /s /b *.tp') do ren %%a %%~nxal
@pause
Идём в папку user, в которой создаём файл myconf.ini, в нём будет наша конфигурация к phpDocumentor:
[Parse Data]
title = Название документации
hidden = false
parseprivate = on
javadocdesc = on
defaultpackagename = Главная
target = Исходящая директория
directory = Входящая директория
output=HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib,HTML:frames:earthli,HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,HTML:frames:DOM/phphtmllib,HTML:Smarty:PHP
sourcecode=on
Возвращаемся опять в корень и запускаем phpdoc.bat. После этого в исходящей директории вы увидите несколько вариантов документаций. Выбираем ту которая больше Вам по душе, и указываем только её в параметре output нашей конфигурации.
Оформить шаблон вы можете в папке phpDocumentor/Converters/Формат/Тип/templates/class.tpl, путь не точный, и зависит от выбранного формата и типа.
Если вы собираетесь использовать русский язык — читаем фикс
1 комментарий