- Somente uma classe por arquivo php;
- Os nomes das classes iniciam sempre com letra maiúscula (padrão Java). Ex: Classe, !NomeClasse.
- Os nomes dos métodos seguem o padrão Java, onde é sempre
escrito com letras minúsculas, caso haja mais de uma palavra, a segunda
inicia com letra maiúscula. Ex: metodo, meuMetodo.
- 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.
- 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.
- 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).
- 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.
- 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.
- Arquitetura 3 camadas:
- Camada de acesso a dados (DAL - Data Access Layer):
- Recupera dados de fontes como bancos de dados e arquivos XML, por exemplo e os fornecesse à camada de lógica de negócios.
- Somente pode ser acessada e manipulada diretamente pela camada de lógica de negócios.
- 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.
- Camada de lógica de negócios (BLL - Business Logic Layer):
- Adiciona restrições de segurança sobre a camada de acesso a dados.
- Adiciona validação de dados.
- Manipula classe Smarty (ou subclasses dela) para geração da camada de apresentação, que contém formatação de dados.
- Gerencia de códigos de erro de acordo com o mapeamento nos arquivos de configuração Smarty.
- Camada de apresentação (PL - Presentation Layer):
- Composta pelas páginas PHP acessadas diretamente pelo browser e templates Smarty.
- Apresenta interface para interação (entrada de dados) com o usuário.
- Formata e exibe dados brutos (raw data) vindos das camadas anteriores.
- Trabalha somente com a camada de lógica de negócios.
- Arquivo de configuração do processo (shared.php):
- 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.
- usar comentário com tags Doxygen estilo !JavaDoc;
- Comentário mínimo para classes:
- bloco de comentário para a classe;
- bloco de comentário para cada método;
- Comentário adicional recomendado:
- bloco de comentário para a lista de atributos da classe;
- @var tipo nome_variavel;
- @brief descrição breve;
- @public, @private ou @protected;
- @see nome_metodo_getter_setter.
- comentários internos dos métodos.
- Padrão de nomenclatura de classes de inclusão class.nomeclasse[.extends.nomesuperclasse].inc.php.
- tags exigidas para o bloco de comentário da classe:
- @class nome_classe;
- @brief descrição breve;
- @package nome_processo;
- @author nome_desenvolvedor.
- tags exigidas para o bloco de comentário dos métodos
- @brief descrição breve;
- @param tipo nome_parametro para cada parâmetro;
- @return tipo_retorno;
- @private, @public ou @protected visibilidade;
- @throw nome_exceção;
- tags recomendadas para o bloco de comentário da classe:
- @bug descrição de bug
- @todo tarefa pendente
- @example nome_arquivo_com_exemplo_de_utilização_da_classe.
- tags recomendadas para o bloco de comentário dos métodos:
- @overload nome_método_sobrecarregado
- Nomenclatura das atividades e respectivas páginas PHP:
- 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.
- Utilizaçãodosseguintes[wiki:WF_PadrõesdeProjeto)):
- ((Singleton));
- ((Factory]
.