A.3. Convenções de Nomes

A.3.1. Classes

O Framework Zend emprega uma convenção por meio dos nomes das classes, diretamente mapeados aos diretórios nos quais estão arquivados. O diretório raiz do Framework Zend é o diretório "Zend/", abaixo do qual todas as classes são arquivadas hierarquicamente.

Nomes de classes podem conter somente caracteres alfanuméricos. Números em nomes de classes são permitidos, mas desencorajados. Sublinhados são permitidos somente no lugar do separador de caminho -- o nome do arquivo "Zend/Db/Table.php" deve ser mapeado para o nome de classe "Zend_Db_Table".

Se o nome de uma classe é composto por mais de uma palavra, a primeira letra de cada nova palavra deve ser maiúscula. Letras maiúsculas sucessivas não são permitidas, por exemplo a classe "Zend_PDF" não é permitida enquanto "Zend_Pdf" é aceita.

As classes do Framework Zend de autoria da Zend ou de uma das companhias parceiras participantes e distribuídas com o Framework devem sempre iniciar com "Zend_" e devem estar arquivadas sob a hierarquia do diretório "Zend/".

São exemplos de nomes aceitáveis para classes:

Zend_Db

Zend_View

Zend_View_Helper

IMPORTANTE: Código que opera com o framework mas que não é parte dele, por exemplo, código escrito por um usuário final e não pela Zend ou uma das companhias parceiras, não pode começar com "Zend_".

A.3.2. Interfaces

Classes de interface devem seguir as mesmas convenções como outras classes (veja acima), porém deve acabar com a palavra "Interface", como nestes exemplos:

Zend_Log_Adapter_Interface
Zend_Controller_Dispatcher_Interface

A.3.3. Nomes de Arquivos

Para todos os outros arquivos, somente caracteres alfanuméricos, sublinhado, e traço "-" são permitidos. Espaços e ponto são proibidos.

Qualquer arquivo que contenha qualquer código PHP deve acabar com a extensão ".php". Estes exemplos mostram nomes de arquivo aceitáveis para as classes que estes contenham, baseados nos exemplos da seção acima:

Zend/Db.php

Zend/Controller/Front.php

Zend/View/Helper/FormRadio.php

Nomes de arquivos devem seguir o mapeamento para nomes de classes descrito acima.

A.3.4. Funções e Métodos

Nomes de funções devem conter somente caracteres alfanuméricos. Sublinhados não são permitidos. Números são permitidos nos nomes, mas são desencorajados.

Nomes de funções devem sempre começar com letra minúscula. Quando um nome consistir em mais de uma palavra, a primeira letra de cada nova palavra deve ser maiúscula. Isto é comumente chamado o método "studlyCaps" ou "camelCaps".

Verbalização é encorajada. Nomes de funções devem ser tão longos quanto práticos para melhorar o entendimento do código.

Estes são exemplos de nomes aceitáveis para funções:

filterInput()

getElementById()

widgetFactory()

Para programação orientada ao objeto, acessores para objetos devem sempre ser prefixados com "get" ou "set". Quando usando padrões de projeto, como o Singleton ou Factory Patterns, o nome do método deve conter o nome do padrão, como prática para que o padrão seja reconhecido na leitura.

Funções no escopo global ("funções soltas") são permitidas mas desencorajadas. É recomendável que estas funções sejam empacotadas numa classe estática.

A.3.5. Variáveis

Nomes de variáveis devem conter somente caracteres alfanuméricos. Sublinhados não são permitidos. Números são permitidos nos nomes, mas desencorajados.

Para variáveis membros de classes que são declaradas com o construtor "private" ou "protected", o primeiro caractere do nome da variável deve ser um único sublinhado. Este é o único uso aceitável de sublinhado no nome. Variáveis membros declaradas "public" não podem começar com sublinhado.

Como nos nomes de funções (veja a seção 3.3 acima) nomes de variáveis devem iniciar com uma letra minúscula e seguir a convenção "camelCaps".

Verbalização é encorajada. Nomes de variáveis devem ser tão longos quanto práticos. Nomes como "$i" e "$n" são desencorajados para qualquer coisa que não esteja num contexto de loop pequeno. Se um loop contém mais de 20 linhas de código, as variáveis para os indices precisam ter um nome mais descritivo.

A.3.6. Constantes

Constantes podem conter caracteres alfanuméricos e sublinhado. Números são permitidos nos nomes.

Constantes devem ter sempre todas suas letras em maiúsculo.

Constantes devem ser definidas como membros de classe usando o construtor "const". Definir constantes no escopo global com "define" é permitido, mas desencorajado.