Changes between Version 4 and Version 5 of phpgwapi


Ignore:
Timestamp:
08/13/07 09:22:15 (17 years ago)
Author:
amuller
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • phpgwapi

    v4 v5  
    1 = Expresso Livre = 
     1= API Expresso Livre = 
    22 
    3 == Desenvolvimento == 
    4  
    5  == 1. Customização do eGroupWare para o Expresso == 
    6  
    7         A estrutura de diretórios do eGroupWare está definida da seguinte forma: o eGroupWare possui em seu diretório (/egroupware) diversos subdiretórios, que representam cada módulo do sistema. Por exemplo, o módulo de Email está no diretório '/egroupware/email', e o módulo Agenda está no diretório '/egroupware/calendar'. 
    8         A maioria dos módulos do sistema foi desenvolvida seguindo os padrões de implementação do Core Team do eGroupware,  e segue desde padrões de codificação da linguagem, até padrões para a estrutura de diretórios e nome dos arquivos. 
    9         Para se desenvolver um novo módulo no eGroupWare, é necessário respeitar a seguinte estrutura de diretórios e nomes de arquivos, conforme o modelo descrito abaixo: 
    10 {{{ 
    11  
    12   --appname 
    13  
    14     +--inc 
    15       |   |--functions.inc.php 
    16  
    17       |   |--header.inc.php 
    18  
    19       |   |--hook_preferences.inc.php 
    20  
    21       |   |--hook_admin.inc.php 
    22  
    23       |   +--footer.inc.php 
    24  
    25     +--js 
    26       |   |--base 
    27  
    28       |   +--js_package_name 
    29  
    30     +--setup 
    31       |   |--default_records.inc.php 
    32  
    33       |   |--setup.inc.php 
    34  
    35       |   +--tables_current.inc.php 
    36  
    37     +--templates 
    38  
    39       +--default 
    40  
    41 }}} 
    42  
    43     Explicando superficialmente a estrutura, tem-se: 
    44 {{{ 
    45  
    46                 --appname:       Diretório da aplicação (modificar o nome); 
    47                 +--inc:          Diretório que contém as classes e os includes; 
    48                 +--js:                   Diretório que contém os scripts Javascript(*.js); 
    49                 +--setup:        Diretório que contém arquivos e scripts de instalação; 
    50                 +--templates     Diretório que contém o template padrão de interface; 
    51                  
    52 }}} 
    53  
    54         A ferramenta eGroupWare utiliza o esquema de templates da própria API (Application Program Interface) do PHP, simplificando a criação de templates personalizados. 
    55         Para criar um novo template no eGroupWare, independente de qual módulo está (layout da página de login, cabeçalho, botões, rodapé, etc), é necessário criar uma nova pasta dentro do diretório '/egroupware/phpgwapi/templates' igual a pasta já existente (ex. celepar), e então  modificar os arquivos já existentes, ou adicionar novos arquivos. O diretório '/egroupware/phpgwapi' não é um módulo qualquer, e sim a API do sistema. 
    56  
    57     Analogamente, para criar um novo template (modificar o layout interno de cada módulo), é necessário apenas gerar uma cópia do diretório 'templates/celepar' para outro diretório no mesmo nível, como exemplo: 'templates/novo_template'. 
    58  
    59     Utilizando este procedimento, a Celepar criou o template personalizado, customizando o eGroupWare e gerando o Expresso Livre. 
    60  
    61  == 2. Arquitetura Interna do Sistema == 
    62  
    63                 Todas aplicações do Expresso são invocadas inicialmente pela mesma página 'index.php', localizada na raiz do eGroupWare. 
    64         Para carregar a página inicial de qualquer módulo, é necessário passar como paramêtro para a 'index.php' um único argumento, exemplificado abaixo: 
    65 {{{ 
    66                 /egroupware/index/php?menuaction=email.uiindex.index 
    67                 (email=aplicação; uiindex=classe; index=método) 
    68 }}} 
    69  
    70         Normalmente, uma simples aplicação possui na raiz do seu diretório uma página 'index.php', que fará as chamadas  das flags da API do eGroupWare, que por sua  vez chamarã os métodos executáveis através da função primária, denotada por index, e localizada em uma das classes  'UI'. 
    71  
    72         Arquitetura dividida em três camadas: 
    73  
    74 Interface do usuário (UI); 
    75 Componentes das regras de negócio (BO); 
    76 Rotinas de manipulação de dados (SO); 
    77  
    78  
    79 I. Componentes da Interface do Usuário (UI) 
    80  
    81         Somente os métodos das classes  UI que podem gerar código para o cliente. Isto inclui X/HTML, XML, imagens PNG ou qualquer outro dado que  vá diretamente para o browser. Além disso, esses  métodos são os  únicos que podem invocados pelo browser, e usando o 'menuaction'. Isso é reforçado através do uso de um array $public_functions, que é definido no topo da classe. O eGroupWare irá checar se o método chamado está nesse  array antes de executá-lo.  
    82         Pode ocorrer de se necessitar métodos que gerem código HTML, mas que não são chamados diretamente. São chamados de helper functions , e podem ser definidos em uma classe  UI, mas não devem ser inseridos no array $public_functions. 
    83         Uma aplicação relativamente pequena necessita de somente uma classe UI, que normalmente fica em 'myapp/inc/' e possui o nome 'class.uimyapp.inc.php'. 
    84         Mas se precisar ou quiser deixar mais dividido em seções dentro da mesma aplicação, para facilitar a manutenção, pode denotar as classes da seguinte forma: 
    85 class.uisessioname.inc.php 
    86         As classes UI podem conter ainda variáveis membro $bo, que referenciam às classes BO. Todas as outras variáveis utilizadas serão somente para uso interno da própria classes UI, e onde o uso de variáveis globais deve ser evitado. 
    87  
    88 II. Componentes de Objetos de Négocio (BO) 
    89  
    90         Essas classes encapsulam todas as regras de negócio que não aplicadas nos dados antes de serem mostrados ao usuário. Um exemplo de funcionalidade é carregar dados usando as classes SO, fazer alguns cálculos sobre esses dados, e seu resultado ser então repassado às classes UI, para ser mostrado ao usuário. 
    91         Similar aos arquivos UI, também podem ser organizados em seções como: 
    92  'myapp/inc/class.bosession.inc.php' 
    93  
    94         Essas classes podem conter variáveis-membro que referenciam às classes SO. 
    95  
    96 III. Componentes de Armazenamento de Objetos (SO) 
    97  
    98         Os métodos dessas classes são responsáveis pela comunicação com o back-end do sistema, tais como Banco de Dados e LDAP. Além disso, são responsáveis pela limpeza de objetos e espaços em branco vindos em campos do resultset do bando de dados. 
    99         Pode-se utilizar o mesmo padrão de nomenclatura: 
    100         'myapp/inc/class.sosession.inc.php'. 
    101         Essas classes podem conter uma variável-membro chamada $db, que é uma referência à variável global $GLOBAL!['PHPGW'] -> db. 
    102  
    103 [[Image(apiframe.jpg)]] 
    104  
    105 == Ver também ==  
    106 [wiki:wikiPadroesdeCodificacaoPHP Padrões de codificação PHP] 
     3 * [wiki:phpgwapi/doc Documentação] 
     4 * [wiki:phpgwapi/bugs Bugs] 
     5 * [wiki:phpgwapi/todo ToDo] 
     6 * [wiki:phpgwapi/changelog ChangeLog] 
     7 * [wiki:wikiPadroesdeCodificacaoPHP Padrões de codificação PHP]