| 1 | <html> |
| 2 | |
| 3 | <ul><li>Somente uma classe por arquivo php;</li><li>Os nomes das classes iniciam sempre com letra maiúscula (padrão Java). Ex: Classe, !NomeClasse. |
| 4 | |
| 5 | <br /></li><li>Os nomes dos métodos seguem o padrão Java, onde é sempre |
| 6 | |
| 7 | escrito com letras minúsculas, caso haja mais de uma palavra, a segunda |
| 8 | |
| 9 | inicia com letra maiúscula. Ex: metodo, meuMetodo.</li><li>Para cada atributo, preferencialmente privado, de uma classe devem ser criados os respectivos métodos getter e setter, públicos, que adicionam uma camada a mais de validação.</li><li>Instâncias externas recebidas por uma classe via argumentos, devem ser transformados em atributos e NÃO PODEM ser manipulados diretamente, mas através de getters e setters.</li><li>Variáveis externas à classe em forma de array devem ser serializadas totalmente (criando uma classe que encapsule a funcionalidade da array) ou parcialmente (criando apenas um método). |
| 10 | |
| 11 | <br /></li><li>Métodos com argumentos de tipo String que deve seguir valores padronizados, devem declarar constantes estáticas internas que serão utilizadas para minimizar o erro na passagem do argumento e também porque constantes aparecem no autocomplete dos editores por fazerem parte da classe. |
| 12 | |
| 13 | <br /></li><li>Para conjuntos de classes que visam um mesmo objetivo porém implementando metodologias diferentes, como por exemplo classes de acesso a diferentes sistemas gerenciadores de banco de dados (SGBD), criar interfaces (PHP 5) ou mesmo classes (PHP 4) com o propósito de padronizar os métodos das classes onde a implementação é realmente feita. Isso possibilita criar uma classe de abstração genérica que possa acessar as mesmas funcionalidades de forma independente da metodologia (SGBD) utilizada. |
| 14 | |
| 15 | <br /></li><li>Arquitetura 3 camadas:</li><ul><li>Camada de acesso a dados (DAL - Data Access Layer): |
| 16 | |
| 17 | <br /></li><ul><li>Recupera dados de fontes como bancos de dados e arquivos XML, por exemplo e os fornecesse à camada de lógica de negócios. |
| 18 | |
| 19 | <br /></li><li>Somente pode ser acessada e manipulada diretamente pela camada de lógica de negócios.</li><li>Não deve fazer restrições de segurança ou validação de dados, que são funções da camada de lógica de negócios.</li></ul><li>Camada de lógica de negócios (BLL - Business Logic Layer):</li><ul><li>Adiciona restrições de segurança sobre a camada de acesso a dados. |
| 20 | |
| 21 | <br /></li><li>Adiciona validação de dados.</li><li>Manipula classe Smarty (ou subclasses dela) para geração da camada de apresentação, que contém formatação de dados.</li><li>Gerencia de códigos de erro de acordo com o mapeamento nos arquivos de configuração Smarty. |
| 22 | |
| 23 | <br /></li></ul><li>Camada de apresentação (PL - Presentation Layer):</li><ul><li>Composta pelas páginas PHP acessadas diretamente pelo browser e templates Smarty. |
| 24 | |
| 25 | <br /></li></ul><ul><li>Apresenta interface para interação (entrada de dados) com o usuário. |
| 26 | |
| 27 | <br /></li><li>Formata e exibe dados brutos (raw data) vindos das camadas anteriores. |
| 28 | |
| 29 | <br /></li><li>Trabalha somente com a camada de lógica de negócios. |
| 30 | |
| 31 | <br /></li></ul><li>Arquivo de configuração do processo (shared.php):</li><ul><li>Responsável por fazer a união das três camadas e possibilitar o mecanismo de extensão das classes base de cada camada. Todos os includes do processo são feitos nesse arquivo. |
| 32 | |
| 33 | <br /></li></ul></ul><li>usar comentário com tags Doxygen estilo !JavaDoc;</li><li>Comentário mínimo para classes:</li><ul><li>bloco de comentário para a classe;</li><li>bloco de comentário para cada método;</li></ul><li>Comentário adicional recomendado:</li><ul><li>bloco de comentário para a lista de atributos da classe;</li><ul><li>@var tipo nome_variavel;</li><li>@brief descrição breve;</li><li>@public, @private ou @protected;</li><li>@see nome_metodo_getter_setter. |
| 34 | |
| 35 | <br /></li></ul><li>comentários internos dos métodos. |
| 36 | |
| 37 | <br /></li></ul><li>Padrão de nomenclatura de classes de inclusão class.nomeclasse[.extends.nomesuperclasse].inc.php.</li><li>tags exigidas para o bloco de comentário da classe:</li><ul><li>@class nome_classe; |
| 38 | |
| 39 | <br /></li><li>@brief descrição breve; |
| 40 | |
| 41 | <br /></li><li>@package nome_processo;</li><li>@author nome_desenvolvedor.</li></ul><li>tags exigidas para o bloco de comentário dos métodos</li><ul><li>@brief descrição breve;</li><li>@param tipo nome_parametro para cada parâmetro;</li><li>@return tipo_retorno;</li><li>@private, @public ou @protected visibilidade;</li><li>@throw nome_exceção;</li></ul><li>tags recomendadas para o bloco de comentário da classe:</li><ul><li>@bug descrição de bug</li><li>@todo tarefa pendente</li><li>@example nome_arquivo_com_exemplo_de_utilização_da_classe.</li></ul><li>tags recomendadas para o bloco de comentário dos métodos:</li><ul><li>@overload nome_método_sobrecarregado |
| 42 | |
| 43 | <br /></li></ul><li>Nomenclatura das atividades e respectivas páginas PHP:</li><ul><li>Devem ser SEMPRE em português e serem um verbo (passar idéia de ação, atividade, comportamento), com a primeira letra maiúscula. Exemplo: Compor.php, Escrever.php, Finalizar.php. |
| 44 | |
| 45 | <br/></li></ul><li>Utilizaçãodosseguintes[wiki:WF_PadrõesdeProjeto)):</li><ul><li>((Singleton));</li><li>((Factory] |
| 46 | . |
| 47 | |
| 48 | <br /></li></ul></ul> |
| 49 | |
| 50 | <br /> |
| 51 | |
| 52 | |
| 53 | |
| 54 | |
| 55 | |
| 56 | |
| 57 | |
| 58 | |
| 59 | |
| 60 | |
| 61 | |
| 62 | |
| 63 | |
| 64 | |
| 65 | |
| 66 | |
| 67 | |
| 68 | |
| 69 | |
| 70 | |
| 71 | |
| 72 | |
| 73 | |
| 74 | |
| 75 | |
| 76 | |
| 77 | |
| 78 | |
| 79 | |
| 80 | |
| 81 | |
| 82 | |
| 83 | |
| 84 | |
| 85 | |
| 86 | |
| 87 | |
| 88 | |
| 89 | |
| 90 | </html> |
| 91 | |