Changes between Initial Version and Version 1 of Projeto/PHPDoc


Ignore:
Timestamp:
07/24/07 15:01:45 (17 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Projeto/PHPDoc

    v1 v1  
     1= Introdução = 
     2  
     3 
     4O phpDocumentor é o padrão atual de auto-documentação para a linguagem PHP. Similar ao Javadoc, e desenvolvido em PHP, pode ser usado da linha de comando ou através de uma interface web para criar documentação profissional para códigos-fonte PHP. phpDocumentor oferece suporte para relacionar documentações, incorporando documentos de usuário como tutoriais e a criação de código-fonte com destaque visual com referência cruzada para documentação genérica do PHP. 
     5 
     6phpDocumentor usa um sistema completo de templates para mudar os comentários do seu código-fonte em formatos mais legíveis e, portanto, úteis. Este sistema permite a criação de documentações de fácil leitura em 15 estilos prontos em versões HTML, PDF, CHM e XML. Você também pode criar seus próprios templates para obter um visual mais próximo do seu projeto. 
     7 
     8 
     9 
     10= Elementos documentáveis = 
     11 
     12 
     13 
     14O phpDocumentor é capaz de documentar automaticamente comandos include, define, funções, páginas procedurais, classes, seus atributos e métodos. Todos podem conter as tags padrão. 
     15 
     16 
     17 
     18== Tags padrão == 
     19 
     20 
     21 
     22Dentre as tags disponíveis no phpDocumentor, estas seriam as mais relevantes no contexto dos processo de workflow: 
     23 
     24 
     25 
     26 * @author [nome_autor]: Autor do elemento atual 
     27 
     28 * @copyright [string]: informações sobre direitos autorais 
     29 
     30 * @deprecated [version/info string]: Elementos abandonados que não devem mais ser usados, podendo ser removidos em futuras versões 
     31 
     32 * @example [arquivo]: Incluir um arquivo externo de exemplo com coloração de sintaxe 
     33 
     34 * @filesource: Similar a @example, porém voltado a arquivos internos 
     35 
     36 * @ignore: Evita a documentação de um elemento 
     37 
     38 * @internal [descrição]: Define descrição de elemento como privada, interna ao projeto e que não deve ser exibida na documentação final 
     39 
     40 * @link [URL link text, URL, URL, URL...]: Mostra um link dentro da documentação 
     41 
     42 * @see [file.ext|elementname|class::methodname()|class::$variablename|functionname()|function functionname Número ilimitado de valores separados por vírgulas]: Link para a documentação de um elemento 
     43 
     44 * @since [version/info string]: Versão a partir da qual um elemento passou a integrar um pacote 
     45 
     46 * @todo [information string]: Modificações a serem feitas 
     47 
     48 * @tutorial [package/ subpackage/ tutorialname.ext #section.subsection description]: Mostra um link para a documentação de um pacote 
     49 
     50 * @uses [file.ext|elementname|class::methodname()|class::$variablename|functionname()|function functionname]: descrição de como o elemento é usado 
     51 
     52 * @version [versionstring]: Versão de um elemento 
     53 
     54 
     55 
     56{{{ 
     57 
     58    Exemplo: 
     59 
     60    / * 
     61 
     62     * Gerencia o processo básico 
     63 
     64     *  
     65 
     66     * @author Carlos Eduardo Nogueira Gonçalves 
     67 
     68     * @package  Workflow 
     69 
     70     * @license http://www.gnu.org/copyleft/gpl.html GPL  
     71 
     72     */ 
     73 
     74}}} 
     75 
     76 
     77 
     78== Tags inline == 
     79 
     80Diferentemente das tags normais, as tags inline podem ser usadas em qualquer lugar dentro do bloco de comentários. 
     81 
     82 
     83 
     84 * inline {@link}: Exibe um link para uma URL ou a documentação de algum elemento 
     85 
     86  * {@link  URL  description } 
     87 
     88  * {@link element description } 
     89 
     90 * inline {@tutorial}: Exibe um link para um tutorial 
     91 
     92  * {@tutorial package/ subpackage/ tutorialname.ext #section.subsection description} 
     93 
     94 * inline {@source}: Exibe o código-fonte de uma função ou método na descrição longa 
     95 
     96  * {@source startline number of lines} 
     97 
     98 * inline {@inheritdoc}: Usada para que as subclasses herdem a descrição detalhada de suas superclasses 
     99 
     100  * {@inheritdoc} 
     101 
     102 
     103 
     104{{{ 
     105 
     106    Exemplo: 
     107 
     108    / * 
     109 
     110     * Text with a normal @tutorial tag 
     111 
     112     * @tutorial phpDocumentor/phpDocumentor.pkg 
     113 
     114     */ 
     115 
     116 
     117 
     118    Exemplo: 
     119 
     120    / * 
     121 
     122     * inline tags demonstration 
     123 
     124     * 
     125 
     126     * this function works heavily with {@link foo()} to rule the world. If I want 
     127 
     128     * to use the characters "{@link" in a docblock, I just use "{@}link."  If 
     129 
     130     * I want the characters "{@*}" I use "{@}*}" 
     131 
     132     */ 
     133 
     134}}} 
     135 
     136 
     137 
     138== Elementos procedurais == 
     139 
     140 
     141 
     142São considerados elementos procedurais: comandos include, define, funções, e páginas procedurais. 
     143 
     144 
     145 
     146=== Bloco de comentário em nível de página === 
     147 
     148 
     149 
     150Um bloco de página pode ter qualquer uma das tags padrão, e deve obrigatoriamente: 
     151 
     152 * Ser o primeiro bloco em um arquivo; 
     153 
     154 * Conter uma tag @package. 
     155 
     156 
     157 
     158=== Comandos include/require/include_once/require_once === 
     159 
     160 
     161 
     162phpDocumentor extrai o nome do arquivo e tenta ligar a documentação para o respectivo arquivo se possível. Comandos include podem apenas ter as tags padrão. 
     163 
     164 
     165 
     166phpDocumentor tentará localizar o arquivo incluído na lista de arquivos analisados, encontrando-o fará uma ligação para a documentação do arquivo. 
     167 
     168 
     169 
     170=== Comandos define === 
     171 
     172 
     173 
     174o bloco de comentários de uma declaração define poderá conter qualquer tag padrão do phpDocumentor, acrescido da tag: 
     175 
     176 
     177 
     178 * @name [nome_var]: Especifica um apelido para uma página procedural ou variável global 
     179 
     180 
     181 
     182{{{ 
     183 
     184    Exemplo: 
     185 
     186    / * 
     187 
     188     * Prefixo das tabelas do workflow 
     189 
     190     * @name GALAXIA_TABLE_PREFIX 
     191 
     192     */ 
     193 
     194     define('GALAXIA_TABLE_PREFIX', 'egw_wf_'); 
     195 
     196}}} 
     197 
     198 
     199 
     200=== Variáveis globais === 
     201 
     202 * @global (obrigatória): [datatype  $globalvariablename, datatype  description] 
     203 
     204 * @name [nome_var]: Especifica um apelido para uma página procedural ou variável global 
     205 
     206 
     207 
     208{{{ 
     209 
     210    Exemplo 
     211 
     212    / * 
     213 
     214     * Special global variable declaration DocBlock 
     215 
     216     * @global integer $GLOBALS['_myvar']  
     217 
     218     * @name $_myvar 
     219 
     220     */ 
     221 
     222    $GLOBALS['_myvar'] = "myval"; 
     223 
     224}}} 
     225 
     226 
     227 
     228=== Declaração de funções === 
     229 
     230 
     231 
     232 * @global [datatype  $globalvariablename, datatype  description] 
     233 
     234 * @param [datatype $paramname description]: Parâmetro de função ou método 
     235 
     236 * @return [datatype description]: Tipo de retorno de função ou método 
     237 
     238 * @staticvar [datatype description]: Uso de uma variável estática dentro de uma função ou método 
     239 
     240 * inline {@source} 
     241 
     242 
     243 
     244{{{ 
     245 
     246    Exemplo: 
     247 
     248    / * 
     249 
     250     * Includes files from the process folder. 
     251 
     252     * @param string $file_name File's name to be included. 
     253 
     254     * @return void 
     255 
     256     * @license http://www.gnu.org/copyleft/gpl.html GPL 
     257 
     258     * @access public 
     259 
     260     */ 
     261 
     262    function wf_include( $file_name ) 
     263 
     264}}} 
     265 
     266 
     267 
     268== Classes == 
     269 
     270 * @package [nome_pacote]: Agrupa classes, funções e constantes 
     271 
     272 * @subpackage [nome_subpacote]: Agrupa classes, funções e constantes de um pacote 
     273 
     274 * @category [nome_categoria]: Organizar o pacote do elemento documentado 
     275 
     276 * @static: Classe ou método estático 
     277 
     278 * @abstract: Documenta uma classe abstrata, atributo ou método 
     279 
     280 * @license [URL name of license]: Mostra um link para a URL da licença 
     281 
     282: Os blocos de comentários são herdados pelas classes filhas, variáveis e métodos. As regras para herança são: 
     283 
     284:* As tags @author, @version e @copyright são automaticamente herdadas a não ser explicitamente especificado em contrário; 
     285 
     286:* Embora as tags @package e @subpackage sejam herdadas automaticamente, é recomendado que sejam usadas explicitamente para todas as classes para evitar problemas de conflitos; 
     287 
     288:* Em caso de ausência de descrição breve, ela será herdada; 
     289 
     290:* Em caso de ausência de descrição longa, ela será herdada; 
     291 
     292:* Em caso de haver uma descrição longa e ainda se quiser herdar a descrição da superclasse, use inline {@inheritdoc} 
     293 
     294 
     295 
     296{{{ 
     297 
     298    Exemplo: 
     299 
     300    / * 
     301 
     302    * Criptografia simples e segura baseada em funções hash    
     303 
     304    * @author   Marc Wöhlken, woehlken@quadracom.de 
     305 
     306    * @author   Carlos Eduardo Nogueira Gonçalves 
     307 
     308    * @version 1.0 
     309 
     310    * @license http://www.gnu.org/copyleft/gpl.html GPL 
     311 
     312    * @package Workflow 
     313 
     314     */ 
     315 
     316    class wf_crypt 
     317 
     318 
     319 
     320    Exemplo usando descrição breve e descrição longa: 
     321 
     322    / * 
     323 
     324     * short desc 
     325 
     326     * 
     327 
     328     * long desc 
     329 
     330     * @package test 
     331 
     332     * @author me 
     333 
     334     * @version 1.0 
     335 
     336     * @abstract 
     337 
     338     * @copyright never 
     339 
     340     */ 
     341 
     342}}} 
     343 
     344 
     345 
     346=== Atributos === 
     347 
     348 
     349 
     350O bloco de comentário de atributos pode conter qualquer tag padrão e obrigatóriamente a tag @var 
     351 
     352 
     353 
     354 * @var [datatype $varname descrição]: Um atributo 
     355 
     356 * @access [private, protected, public]: Controle de acesso para um elemento 
     357 
     358 
     359 
     360{{{ 
     361 
     362    Exemplo: 
     363 
     364    / * 
     365 
     366     * @var     string $hash_key Versão embaralhada da chave de criptografia fornecida pelo usuário 
     367 
     368     * @access public 
     369 
     370      */ 
     371 
     372    var $hash_key; 
     373 
     374}}} 
     375 
     376 
     377 
     378=== Métodos === 
     379 
     380 
     381 
     382 * @access [private, protected, public]: Controle de acesso para um elemento 
     383 
     384 * @global [datatype $globalvariablename, datatype  description] 
     385 
     386 * @param [datatype $paramname description]: Parâmetro de função ou método 
     387 
     388 * @return [datatype description]: Tipo de retorno de função ou método.(Caso retorne mixed especificar quais os tipos possíveis na descrição) 
     389 
     390 * @static: Classe ou método estático 
     391 
     392 * @staticvar [datatype description]: Uso de uma variável estática dentro de uma função ou método 
     393 
     394 * @final: Método que não deve ser sobrescrito nas subclasses 
     395 
     396 * inline {@source} 
     397 
     398 
     399 
     400{{{ 
     401 
     402    Exemplo: 
     403 
     404    / * 
     405 
     406     * Usado para definir a chave de criptografia e descriptografia 
     407 
     408     * @param   string  $key    Chave secreta usada para criptografia e descriptografia 
     409 
     410     * @param   boolean $base64 Usar codificação base64 
     411 
     412     * @return void  
     413 
     414     * @access public 
     415 
     416     */ 
     417 
     418    function setKey($key, $base64 = true)  
     419 
     420}}} 
     421 
     422 
     423 
     424= Referências = 
     425 
     426 
     427 
     428:[http://www.phpdoc.org/manual.php Manual] 
     429 
     430:[http://www.phpdoc.org/tutorial.php Tutorial]