Advertisement
  1. Code
  2. PHP
  3. Yii

Programación con Yii: Generar la Documentación

Scroll to top
Read Time: 8 min
This post is part of a series called How to Program With Yii2.
Programming With Yii2: Building Community With Voting, Comments, and Sharing
This post is part of a series called Building Your Startup With PHP.
How to Build a User Tour With Shepherd in JavaScript

() translation by (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

En esta Serie de Programación con Yii2, estoy guiando a los lectores en el uso de Yii2 Framework para PHP. Quizás también estés interesado en mi Introducción a Yii Framework, comentarios sobre los beneficios de Yii y que incluye un resumen de lo que es nuevo en Yii 2.x.

¡Bienvenido! Recientemente, escribí sobre la Construcción de REST APIs para su Aplicación Yii y Ampliado la Serie API Personalizadas para usar en nuestro startup Aplicación, Meeting Planner.

En el tutorial de hoy, te introduzco a la Extensión de apidoc de Yii, que genera automáticamente documentación navegable su código. Voy a utilizar para generar documentación de la API para el Meeting Planner.

Para Empezar

Programming With Yii - APIdoc installation GuideProgramming With Yii - APIdoc installation GuideProgramming With Yii - APIdoc installation Guide

Apidoc la instalación es fácil. Como se muestra arriba, usted apenas agrega el paquete con el compositor.

Además de generar documentación de código, también es capaz de generar la documentación de descuento y transformando esto en PDF.

Por ejemplo, hay esta la Documentación de Yii Framework, la documentación de códigos típicos:

Programming With Yii - Auto-Generated Framework DocumentationProgramming With Yii - Auto-Generated Framework DocumentationProgramming With Yii - Auto-Generated Framework Documentation

Y aquí está la Guía de Yii2, que creo que es generado de descuento aquí e integrado con la documentación de código para la fácil navegación:

Programming With Yii Generating Documentation - Guide generated from MarkdownProgramming With Yii Generating Documentation - Guide generated from MarkdownProgramming With Yii Generating Documentation - Guide generated from Markdown

Aquí está la documentación sintaxis que admite apidoc; se basa en phpdoc.

Irónicamente, la documentación de apidoc aún no está completa, pero es bastante fácil de usar para auto-documentación básica.

Generando Documentación de la API

Si usted ha seguido junto la serie mi startup, eres consciente de que estoy construyendo una amplia API para soporte de aplicaciones móviles, etcetera. Apidoc es lo ideal para mí mantener dinámica documentación automatizada para él.

Sin duda hay un montón de otros servicios de web que ayudará a documentar su API, pero encontré que apidoc de Yii funcionó bien para mis necesidades, y aprecié el tema phpdoc-estilo que usan.

Usando un estándar estilo comentando es probable que sean capaces de construir fácilmente documentación de código Meeting Planner si alguna vez quiero utilizarlos otros servicios.

Crear Bloques de Comentario

Básicamente, crea comentarios dentro del código que apidoc utiliza para generar la documentación. Se describe en la Guía de estilo codificación de Yii.

Coloque un bloque de comentario en la parte superior de cada archivo como este:

1
<?php
2
/**

3
 * @link https://meetingplanner.io

4
 * @copyright Copyright (c) 2016 Lookahead Consulting

5
 * @license https://github.com/newscloud/mp/blob/master/LICENSE

6
 */

Y coloque un bloque de comentario sobre cada controlador o la determinación del modelo:

1
/**

2
 * UserTokenController provides API functionality for registration, delete and verify

3
 *

4
 * @author Jeff Reifman <jeff@meetingplanner.io>

5
 * @since 0.1

6
 */
7
class UserTokenController extends Controller
8
{

Luego, coloque un bloque de comentario detallado sobre cada método, que incluye parámetros, valores devueltos y excepciones:

1
/**

2
     * Register a new user with an external social Oauth_token

3
     *

4
     * @param string $signature the hash generated with app_secret

5
     * @param string $app_id in header, the shared secret application id

6
     * @param string $email in header, email address

7
     * @param string $firstname in header, first name

8
     * @param string $lastname in header, last name

9
     * @param string $oauth_token in header, the token returned from Facebook during OAuth for this user

10
     * @param string $source in header, the source that the $oauth_token is from e.g. 'facebook' e.g. [$oauth_token]

11
     * @return obj $identityObj with user_id and user_token

12
     * @throws Exception not yet implemented

13
     */
14
    public function actionRegister($signature,$app_id='',$email='',$firstname ='',$lastname='',$oauth_token='',$source='') {

Debe seguir la disposición prescrita tal como se describe para alimentar apidoc con éxito.

Utilizando Argumentos de Marcador de Posición Para la Documentación API

El equipo de Yii desarrolló apidoc para generar documentación de código. Sin embargo, como escribí en Asegurar su API, todos menos el argumento de la firma de hash se ha movido a las cabeceras http. Estos son invisibles para la apidoc. Así, para generar documentación de la API, decidí utilizar una solución alternativa.

Como se puede ver, incluyen argumentos dummy en los métodos y luego especificar en los comentarios que éstos son enviados como cabeceras o "en header."

1
* @param string $signature the hash generated with app_secret
2
* @param string $app_id in header, the shared secret application id
3
* @param string $email in header, email address
4
* @param string $firstname in header, first name
5
* @param string $lastname in header, last name

Como valores por defecto se incluyen en las definiciones de función, no hay ningún daño real hecho:

1
public function actionRegister($signature,$app_id='',$email='',$firstname ='',
2
    $lastname='',$oauth_token='',$source='') {

En un momento, verás cómo esto funciona generalmente para la documentación API, aunque no es óptimo de estilo de codificación.

Pasemos a utilizar apidoc para generar la documentación.

Generando la Documentación

Puede revisar apidoc comandos ejecutando sin argumentos:

1
$ ./vendor/bin/apidoc
2
3
This is Yii version 2.0.10.
4
5
The following commands are available:
6
7
- api                      Generate class API documentation.
8
    api/index (default)    Renders API documentation files
9
10
- guide                    This command can render documentation stored as
11
                           markdown files such as the yii guide
12
    guide/index (default)  Renders API documentation files
13
14
- help                     Provides help information about console commands.
15
    help/index (default)   Displays available commands or the detailed
16
                           information
17
18
19
To see the help of each command, enter:
20
21
  apidoc help <command-name>

Usaré la opción de api, y aquí están las configuraciones que usted puede hacer:

1
$ ./vendor/bin/apidoc help api
2
3
DESCRIPTION
4
5
Renders API documentation files
6
7
8
USAGE
9
10
apidoc api <sourceDirs> <targetDir> [...options...]
11
12
- sourceDirs (required): array
13
  $sourceDirs
14
15
- targetDir (required): string
16
  $targetDir
17
18
19
OPTIONS
20
21
--appconfig: string
22
  custom application configuration file path.
23
  If not set, default application configuration is used.
24
25
--color: boolean, 0 or 1
26
  whether to enable ANSI color in the output.
27
  If not set, ANSI color will only be enabled for terminals that support it.
28
29
--exclude: string|array
30
  files to exclude.
31
32
--guide: string
33
  url to where the guide files are located
34
35
--guidePrefix: string (defaults to 'guide-')
36
  prefix to prepend to all guide file names.
37
38
--help, -h: boolean, 0 or 1
39
  whether to display help information about current command.
40
41
--interactive: boolean, 0 or 1 (defaults to 1)
42
  whether to run the command interactively.
43
44
--pageTitle: string
45
  page title
46
47
--template: string (defaults to 'bootstrap')
48
  template to use for rendering

Para generar mi documentación de la API, cuyo directorio también es api, voy a hacer lo siguiente:

1
$ ./vendor/bin/apidoc api api api/web/docs 
2
    --pageTitle=MeetingPlanner
3
TargetDirectory already exists. Overwrite? (yes|no) [yes]:yes
4
Searching files to process... done.
5
Loading apidoc data from cache... done.
6
Checking for updated files... done.
7
8 files to update.
8
Processing files... done.
9
Updating cross references and backlinks... done.
10
Rendering files: done.
11
generating extension index files...done.
12
generating search index...done.
13
35 errors have been logged to api/web/docs/errors.txt
14
214 warnings have been logged to api/web/docs/warnings.txt

Porque no he terminado de comentar todo el árbol, hay errores y advertencias generadas. Más a menudo se ven algo como esto:

1
Array
2
(
3
    [0] => Array
4
        (
5
            [line] => 31
6
            [file] => api/controllers/ParticipantController.php
7
            [message] => Method behaviors has no parent to inherit from in api\controllers\ParticipantController.
8
        )
9
10
    [1] => Array
11
        (
12
            [line] => 32
13
            [file] => api/controllers/PlaceController.php
14
            [message] => Method behaviors has no parent to inherit from in api\controllers\PlaceController.
15
        )

Navegar por la Documentación

Publicación de la documentación en la línea de comandos de apidoc anterior a /api/web/docs significa que puede ver la documentación de Meeting Planner de la web.

Por ejemplo, aquí está el UserTokenController:

Programming With Yii Generating Documentation - UserTokenController ExampleProgramming With Yii Generating Documentation - UserTokenController ExampleProgramming With Yii Generating Documentation - UserTokenController Example

Este es el método de actionRegister() que muestra los comentarios de parámetro reflejados con el in header en información.

Programming With Yii Generating Documentation - UserTokenController Example actionRegister methodProgramming With Yii Generating Documentation - UserTokenController Example actionRegister methodProgramming With Yii Generating Documentation - UserTokenController Example actionRegister method

Aquí está la Documentación de MeetingController:

Programming With Yii Generating Documentation - MeetingController ExampleProgramming With Yii Generating Documentation - MeetingController ExampleProgramming With Yii Generating Documentation - MeetingController Example

Y este es el método de actionMeetingplacechoices():

Programming With Yii Generating Documentation - MeetingController Example actionMeetingplaces exampleProgramming With Yii Generating Documentation - MeetingController Example actionMeetingplaces exampleProgramming With Yii Generating Documentation - MeetingController Example actionMeetingplaces example

Como se puede ver, esto es extremadamente útil para compartir una API con programadores de terceros en tiempo real como entrega el código. El gran beneficio es que elimina la necesidad de mantener manualmente la documentación de la API por separado.

En cualquier momento puede eliminar una tarea de una startup, es una gran victoria.

De Cara al Futuro

Espero que usted ha visto un poco del poder de la extensión de apidoc de Yii2. Se puede utilizar para mantener documentación para todo el código, y también le anima a seguir con los comentarios, que voy a hacer más de momento.

Si usted tiene cualquier pregunta o comentario, por favor publicarlos en los comentarios. Si desea mantenerse al día sobre mi futuro Envato Tuts + tutoriales y otras series, por favor visite mi página de instructor o sigame @reifman. Definitivamente comprobar hacia fuera mi serie mi startup y Meeting Planner.

Enlaces Relacionados

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.