34
Criando as classes modelo Agora é o momento de criar as classes do modelo da aplicação. Um modelo é derivado da classe TRecord do framework. Esta classe fornece métodos como store(), delete() e load() que manipulam um objeto na base de dados. O uso deste métodos está explicado no tutorial. O próximo arquivo está localizado no diretório app/model e é nomeado Person.class.php. 1. <?php 2. class Person extends TRecord 3. { 4. const TABLENAME = 'person'; 5. const PRIMARYKEY= 'id'; 6. const IDPOLICY = 'max'; // {max, serial} 7. 8. /** 9. * Constructor method 10. * @param $id Primary key to be loaded (optional) 11. */ 12. public function __construct($id = NULL) 13. { 14. parent::__construct($id); 15. parent::addAttribute('name'); 16. parent::addAttribute('address'); 17. parent::addAttribute('birthdate'); 18. parent::addAttribute('gender'); 19. } 20. } 21. ?> A constante TABLENAME define o nome da tabela que a classe de modelo irá manipular e a constante PRIMARYKEY define o campo de chave primária. O framework não manipula chaves compostas. A constante IDPOLICY define a estratégia para geração de novos ID's. max+1 ou serial (deixa o campo de chave primária vazio e o banco de dados decide seu novo valor). O método addAttribute() limita quais atributos deste objeto serão persistidos (gravados) na base de dados. Quaisquer atributos que não estejam no addAttribute() serão ignorados pelo mecanismo de persistência. Caso o addAttribute() não seja chamado nenhuma vez, todos atributos serão persistidos. Criando controladores de aplicação Agora é o momento de criar um controlador de aplicação. A forma mais simples de escrever um controlador de aplicação é utilizando um controlador-padrão disponível no framework. O TStandardForm fornece uma abordagem-padrão para manipulação de formulários, enquanto o TStandardList fornece uma abordagem-padrão para manipulação de

Adianti Framework Tutorial

  • Upload
    arkinux

  • View
    162

  • Download
    14

Embed Size (px)

DESCRIPTION

Adianti Framework Tutorial.

Citation preview

Criando as classes modeloAgora o momento de criar as classes do modelo da aplicao. Um modelo derivado da classe TRecord do framework. Esta classe fornece mtodos como store(), delete() e load() que manipulam um objeto na base de dados. O uso deste mtodos est explicado notutorial. O prximo arquivo est localizado no diretrio app/model e nomeadoPerson.class.php.1.

A constante TABLENAME define o nome da tabela que a classe de modelo ir manipular e a constante PRIMARYKEY define o campo de chave primria. O framework no manipula chaves compostas. A constante IDPOLICY define a estratgia para gerao de novos ID's. max+1 ou serial (deixa o campo de chave primria vazio e o banco de dados decide seu novo valor).

O mtodo addAttribute() limita quais atributos deste objeto sero persistidos (gravados) na base de dados. Quaisquer atributos que no estejam no addAttribute() sero ignorados pelo mecanismo de persistncia. Caso o addAttribute() no seja chamado nenhuma vez, todos atributos sero persistidos.Criando controladores de aplicaoAgora o momento de criar um controlador de aplicao. A forma mais simples de escrever um controlador de aplicao utilizando um controlador-padro disponvel no framework. O TStandardForm fornece uma abordagem-padro para manipulao de formulrios, enquanto o TStandardList fornece uma abordagem-padro para manipulao de datagrids.

Os controladores de aplicao so salvos no diretrioapp/control. Neste caso, a classe PersonForm salva no arquivoapp/control/PersonForm.class.php. Todos os controladores de aplicao possuem um mtodo construtor. No mtodo construtor, definimos a estrutura visual da aplicao. O controlador-padro TStandardForm fornece mtodos como setDatabase() e setActiveRecord() que definem o nome da base de dados (veja os arquivos INI) e a classe de Active Record que ir manipular os dados do formulrio. O uso dos controladores-padro explicado notutorial.

O prximo passo criar o formulrio. Existem muitas maneiras de se fazer isso. Geralmente utilizamos a classe TForm juntamente com a classe TTable ou TPanel. Mas se precisamos criar um formulrio rapidamente, podemos utilizar a classe TQuickForm. Este continer organiza os campos do formulrio de uma forma padro. O mtodo addField() usado para adicionar campos no formulrio. Cada campo pode utilizar um diferente componente do toolkit (TEntry, TDate, TCombo, etc). Podemos ver os widgets disponveis notutorial. O boto de salvar no formulrio chama o mtodo-padro onSave() fornecido pela classe TStandardForm.1. A pgina de entradaA pgina de entrada, que index.web.php(Web) ouindex.gtk.php(Gtk), responsvel por definir o comportamento inicial da aplicao, selecionar idioma, definir timezone, selecionar template, dentre outros. Configuraes globais e de ambiente da aplicao devem ser definidas na pgina de entrada, no em suas classes (control, model, etc).

Neste exemplo temos oindex.web.php(Web). A pgina de entrada define qual ser o class loader do sistema (TAdiantiLoader), define o nome da aplicao (usado para separar sesses), define timezone e idioma, cria o menu da aplicao (ver a seguir), carrega o layout, traduz o layout, e carrega o controlador identificado pela URL (se existir), por meio da funo __adianti_load_page().1. show();23. $menu_string=ob_get_contents();24. ob_end_clean();25. 26. $content=file_get_contents("app/templates/{$template}/layout.html");27. $content=TApplicationTranslator::translateTemplate($content);28. $content=str_replace('{LIBRARIES}',file_get_contents("app/templates/{$template}/libraries.html"),$content);29. $content=str_replace('{URI}',$uri,$content);30. $content=str_replace('{class}',isset($_REQUEST['class'])?$_REQUEST['class']:'',$content);31. $content=str_replace('{template}',$template,$content);32. $content=str_replace('{MENU}',$menu_string,$content);33. $css=TPage::getLoadedCSS();34. $js=TPage::getLoadedJS();35. $content=str_replace('{HEAD}',$css.$js,$content);36. 37. if(isset($_REQUEST['class']))38. {39. $url=http_build_query($_REQUEST);40. $content=str_replace('//#javascript_placeholder#',"__adianti_load_page('engine.php?{$url}');",$content);41. }42. echo$content;43. ?>Definindo o menu da aplicaoAgora o momento de definir o menu da aplicao. O menu da aplicao definido no arquivomenu.xmle usado pelos frontend-padro fornecido pelo framework. Isto significa que somente uma recomendao, por que voc pode definir outros frontend usando HTML/CSS para o ambiente Web ou componentes Gtk para o ambiente Gtk. A aplicao l omenu.xmle apresenta o menu para o usurio. 1. 2. 3. 4. 5. 6. 7. app/images/ico_store.png8. PersonForm9. 10. 11. 12. 13. 14. Testando a aplicaoAgora chegou o momento de testar a aplicao nos ambientes Web e Gtk. Primeiro, vamos testar a aplicao sob o ambiente Web. Para tal, abrimos o navegador a acessamos o diretrio da aplicao sob o httpdocs do apache. Nesse momento, o frontendindex.php carregado.http://localhost/samplesAgora o momento de testar a aplicao sob o ambiente grfico (Gtk). Primeiro, voc precisa instalar o PHP-GTK paraWindows,LinuxouMac OS. Ento, temos apenas que abrir um terminal, acessar o diretrio da aplicao e executar o php-gtk2 para interpretar oindex.php, que ir automaticamente carregar o frontendindex.gtk.php.O componente THtmlRenderer permite implementarmos o design pattern Template View, usando fragmentos de HTML juntamente com outros componentes do Adianti Framework.Por meio desse componente, podemos utilizar arquivos HTML para criar layouts mais elaborados para as pginas da aplicao utilizando templates. Cada template possui sees e variveis, que so substitudas pela aplicao. Nesse exemplo, estamos habilitando uma seo simples (main) com substituio de variveis, e uma seo repetitiva (contacts-detail), por meio do mtodo enableSection().

Exemplo1.