Php Magazine - Ides (Pt-br) - (3a Ed) (Jun.2007)

download Php Magazine - Ides (Pt-br) - (3a Ed) (Jun.2007)

of 39

Transcript of Php Magazine - Ides (Pt-br) - (3a Ed) (Jun.2007)

  • PHP Magazine - 3a Edio -

  • 2 - 3a Edio - PHP Magazine

    Caro leitor, Prosseguindo no rduo trabalho de lhe proporcionar uma boa leitura, estamos lanando a terceira edio da

    nica revista sobre linguagem PHP em portugus. A partir deste momento a revista passar para uma nova fase em que os novos voluntrios comeam a traba-

    lhar efetivamente. Fruto da organizao interna da revista, da definio de funes e dos objetivos traados. Em maio, ministramos uma palestra sobre a PHP Magazine no PHP Road Show, primeiro evento de PHP no

    Distrito Federal. Percebemos que a maioria dos participantes j conhecia a revista, o que nos deixa muito satisfei-tos com nosso trabalho. E, melhor ainda, ao final da palestra vrias pessoas se ofereceram para integrar nossa equipe de colaboradores. Assim, inicialmente damos as boas vindas ao Thiago Incio, nosso novo design grfico, que j est com a mo na massa.

    No podemos deixar de agradecer aos autores que nos prestigiam com seus artigos altamente qualificados. Agradecemos, principalmente, a todos que j escreveram em outras edies. Aos novos autores, damos as nossas boas-vindas e j aguardamos os prximos trabalhos.

    Estamos tambm comemorando o marco de 5.000 assinantes que nos prestigiam e nos motivam a seguir com este trabalho. Agradecemos, portanto, aos moderadores de listas famosas de tecnologia que, de maneira bas-tante amigvel, contribuem na divulgao da revista e da linguagem PHP em si.

    Nesta edio voc encontrar matrias de temas variados e importantes. A matria principal traz um peque-no demonstrativo das IDEs mais novas para PHP, assunto que tem sido muito discutido nas listas de PHP Brasil a fora. H tambm um artigo sobre segurana, que apresenta alguns passos para programar de maneira segura, e outro artigo sobre codificao limpa, com dicas para os iniciantes deixarem seus cdigos mais limpos e agrad-veis. Voc ler tambm outros artigos interessantes sobre PHP-GTK, Guar, Arrays e gerenciamento de conte-do de aprendizagem. Alm disso, preparamos um resumo sobre o 8 Frum Internacional de Software Livre (FISL 8.0) e do 1 PHP Road Show.

    Mais uma vez a administrao da PHP Magazine agradece a voc pelo apoio. Lembramos que o sucesso da revista fruto da sua leitura e da sua divulgao entre amigos, colegas de trabalho e em aulas.

    Boa leitura. Equipe PHP Magazine

    Editores Flvio Z. Fagundes, [email protected] Ricardo Arago, [email protected] Administrao Flvio Z. Fagundes, [email protected] Norberto Augusto, [email protected] Ricardo Arago, [email protected] Comercial Norberto Augusto Projeto grfico Ricardo Arago Flvio Z. Fagundes Thiago Incio Reviso tcnica Ricardo Arago da Silva Flvio Zacharias Fagundes Reviso portugus Camilla Carvalho Correspondentes e colaboradores Adler Brediks Medrado Cleber Sousa Er Galvo Abbott Josiane Lima de Oliveira Leandro Schwarz Pablo Dall'Oglio Pascoal Vernieri

    SUMRIO 3, Criando uma Agenda com PHP-GTK e SQLite 7, Tratamento de Vetores e Matrizes em PHP Parte II 11, Escrevendo cdigo PHP de fcil manuteno 14, Ambientes de livre distribuio para gerenciamento de contedo de aprendizagem 19, Um pequeno tour pelas IDEs: PDT, Delphi e Dream-weaver CS3 27, Guar: Uma soluo em software livre para reduo de custos no desenvolvimento de aplicaes Web 31, Segurana no PHP: Os 6 requisitos mnimos 36, 8 Frum Internacional de Software Livre 38, 1. PHP Road Show

  • PHP Magazine - 3a Edio - 3

    PHP-GTK

    Criando uma Agenda com

    PHPPHPPHP---GTK e SQLiteGTK e SQLiteGTK e SQLite

    por Pablo DallOglio

    Neste artigo iremos construir uma ferramenta para gesto de compromissos em PHP-GTK utilizando o banco de dados SQLite para armazenar os dados.

    Como a maioria de vocs j sabe, o PHP conec-ta em todos os bancos de dados importantes existen-tes (Postgres, Mysql, Oracle, SqlServer, Firebird, DB2, dentre outros). Na biblioteca GTK programa-mos o acesso ao banco de dados da mesma forma que uma aplicao web, com a diferena de que o acesso aos dados ser remoto (cliente-servidor).

    J h algum tempo eu pensava em um exemplo bem simples de aplicao em PHP-GTK, em que as pessoas pudessem copiar e colar e j sair utilizando conjuntamente com um banco de dados, mas, para isso, o banco de dados teria de ser de fcil instala-o.

    Foi a que me veio a idia de desenvolver uma Agenda, afinal, todos ns precisamos controlar nos-sos compromissos. E resolvi utilizar o SQLite, um banco de dados em sistema de arquivos que poderia ser compactado junto com a aplicao, dispensando a instalao de um servidor de banco de dados, tor-nando sua instalao infinitamente simples.

    1. SQLite

    O SQLite um banco de dados relacional cuja estrutura (tabelas, ndices, dados) est contida em um nico arquivo no sistema. O acesso aos dados implementado por uma biblioteca de funes escri-tas em C por Richard Hipp e a manipulao dos da-dos realizada por meio da linguagem SQL.

    Voc deve estar acostumado com bancos de dados relacionais cuja estrutura cliente-servidor exi-ge a instalao do servidor de banco de dados, que ir se comunicar com a aplicao, geralmente atra-vs de uma porta especfica, via protocolo TCP/IP. Como o SQLite no tem nada disto, ele pode ser compactado juntamente com a aplicao. Imagine um arquivo chamado "meusistema.db" contendo todas as tabelas do seu sistema! Voc s ter de compactar este arquivo junto com sua aplicao pa-

    ra distribuir seu programa! Lembra do forma-to .DBF, comum entre as aplicaes clipper, ou os arquivos .MDB do MS Access ? Pois , o SQLite tem o mesmo foco: proporcionar uma estrutura de banco de dados simples em arquivo para ser distri-budo juntamente com aplicaes standalone, mas muito melhor que seus antecessores, tendo em vista que implementa o padro SQL92, permite transa-es, triggers e permite bancos de dados de at 2 tebibytes de tamanho (2 na 41), ou seja, muito by-te. O banco de dados pode servir vrias requisies de leitura (SELECT) ao mesmo tempo, entretanto, um lock do arquivo realizado em operaes de escrita (INSERT, UPDATE, DELETE).

    A biblioteca de acesso ao SQLite parte inte-grante do PHP5. Isto quer dizer, que as funes de criao e acesso ao banco de dados so nativas da linguagem, o que torna seu uso extremamente sim-ples.

    Figura 1 Estrutura do SQLite

  • 4 - 3a Edio - PHP Magazine

    2. Classe Agenda Para comear nosso programa, criaremos uma

    classe chamada Agenda. Iremos cri-la utilizando o mecanismo de herana. Agenda ser classe filha de GtkWindow, logo, ela tambm ser uma janela e ir possuir todos os mtodos que esta possui. No mto-do construtor, alm de instanciar e centralizar a ja-nela, iremos criar um componente calendrio e co-nectar dois de seus sinais: day-selected, que dispa-rado sempre que selecionada uma data, e month-changed, que disparado sempre que o usurio vi-sualiza outro ms. Iremos criar campos para digita-o de data, hora, ttulo e descrio da tarefa. Tam-bm iremos criar dois botes de ao: um para sal-var o compromisso digitado e outro para excluir um compromisso da listagem de compromissos. Esta listagem ser criada pelo mtodo createTaskList(), que ir criar toda estrutura do GtkTreeView para visualizar as tarefas.

  • PHP Magazine - 3a Edio - 5

    ('sqlite:agenda.db'); } }

    O prximo mtodo que iremos criar o create-TaskList(). Este mtodo ir criar a listagem de tare-fas que fica ao lado do calendrio.

    /* * mtodo createTaskList * cria a listagem de tarefas */ function createTaskList() { // cria objeto treeview $this->list = new GtkTreeView; // cria modelo de dados com 4 posies $this->model = new GtkListStore(...); $this->list->set_model($this->model); // cria 4 colunas $column1 = new GtkTreeViewColumn('Data'); $column2 = new GtkTreeViewColumn('Hora'); ... // cria 4 renderizadores de texto $renderer1 = new GtkCellRendererText(); $renderer2 = new GtkCellRendererText(); ... // empacota os renderizadores $column1->pack_start($renderer1, true); $column2->pack_start($renderer2, true); ... // adiciona as colunas na treeview $this->list->append_column($column1); $this->list->append_column($column2); ... // define dimenses da treeview $this->list->set_size_request(400,400); }

    Aps o mtodo createTaskList(), temos o mto-do onDaySelected(). Ele executado sempre que o usurio clica em alguma data do calendrio. Seu objetivo preparar os campos para digitao de um novo compromisso. Ele limpa todos os campos de digitao, preenchendo o campo data justamente com a data selecionada. /* * mtodo onDaySelected * executado sempre que o usurio * seleciona outra data */ function onDaySelected() { // obtm a data selecionada $date = $this->calendar->get_date(); $ano = $date[0]; $mes = $date[1] +1; $dia = $date[2]; // limpa os campos de digitao $this->data->set_text("$dia/$mes/$ano"); $this->hora->set_text(''); $this->titulo->set_text(''); $buffer = $this->descr->get_buffer(); $buffer->delete($buffer->get_start_iter(),

    $buffer->get_end_iter()); }

    Nosso prximo mtodo o onMonthChanged(). Ele ser executado sempre que o usurio navegar no calendrio, alterando seu ms. Seu objetivo recar-regar todos os compromissos do ms corrente. Desta forma, este mtodo ser executado tambm em ou-tras ocasies, quando, por exemplo, for inserido um novo registro ou for excludo um compromisso. /* * mtodo onMonthChanged * executado sempre que o usurio * altera o ms do calendrio */ function onMonthChanged() { // limpa a lista de tarefas $this->model->clear(); // obtm o ms exibido atualmente $date = $this->calendar->get_date(); $mes = $date[1] +1; // carrega todos os compromissos do ms // que for selecionado $result = $this->conn->Query("select * from agenda where strftime('%m', data)='{$mes}' order by data, hora"); // percorre os compromissos, adicionando no modelo de dados da lista foreach ($result as $row) { $dados = array($row['data'], $row['hora'], $row['titulo'], $row['descricao']); $this->model->append($dados); } }

    O prximo mtodo o onSave(). Este mtodo executado sempre que o usurio clicar no boto de salvar e ser responsvel por coletar os dados digita-dos a respeito do compromisso e por inser-los no banco de dados, recarregando a listagem de tarefas logo aps. /* * mtodo onSave * Salva um compromisso */ function onSave() { // obtm os dados digitados $data = $this->data->get_text(); $hora = $this->hora->get_text(); $titulo = $this->titulo->get_text(); $buffer = $this->descr->get_buffer(); $descricao = ... // insere no banco de dados $this->conn->Query("INSERT INTO agenda VA-LUES ('$data', '$hora', '$titulo', '$descri-cao')"); // recarrega as tarefas do ms $this->onMonthChanged(); }

    Quase terminando nossa Agenda, temos o m-

  • 6 - 3a Edio - PHP Magazine

    todo onDelete(). Seu objetivo obter o item selecio-nado na listagem de compromissos e perguntar ao usurio se ele deseja exclu-lo. Caso afirmativo, o programa ir excluir o item do banco de dados, ba-seado na data e hora do compromisso, recarregando a listagem de compromissos logo aps. /* * mtodo onDelete * Exclui um compromisso */ function onDelete() { // obtm o registro selecionado $selection = $this->list->get_selection(); list ($model, $iter) = $selection->get_selected(); // sel h seleo if ($iter) { // obtm a data e hora $data = $model->get_value($iter, 0); $hora = $model->get_value($iter, 1); // pergunta ao usurio $dialog = new GtkMessageDialog(... 'Deseja excluir a tarefa ?'); $resposta = $dialog->run(); if ($resposta == Gtk::RESPONSE_YES) { // exclui registro $this->conn->Query("DELETE FROM agenda WHERE data='$data' and hora='$hora'"); } // fecha dilogo $dialog->destroy(); } // recarrega as tarefas do ms $this->onMonthChanged(); }

    Por ltimo, temos o mtodo que executado quando a janela da aplicao fechada, ou seja, destruda. Neste ca-so, estamos fechando a conexo PDO com o banco SQLite simplesmente destruindo o objeto de conexo. /* * mtodo __destruct * Executado quando janela for destruda */ function __destruct() { // fecha conexo PDO unset($this->conn); }

    }

    Agora que terminamos de escrever nossa clas-se, veja a seguir como ficou nosso programa. Nele, precisamos somente instanciar um objeto da classe Agenda. Como esta classe filha de GtkWindow, utilizamos o mtodo show_all() para exibi-la na te-la.

    $app = new Agenda; $app->show_all(); Gtk::Main() ?>

    Figura 2 Tela da Agenda riada

    Consideraes finais

    Neste artigo escrevemos uma simples aplicao para controle de compromissos em PHP-GTK com menos de 200 linhas de cdigo, descartando os co-mentrios. Como o programa ficou um pouco gran-de para o formato da revista, optamos por cortar al-guns pedaos, substituindo-os por ... por motivos didticos. Voc pode fazer download da aplicao completa no site da Agenda, em http://pagenda.php-gtk.com.br Referncias e links sugeridos [PHP-GTK Brasil] http://www.php-gtk.com.br [Livro PHP-GTK] http://www.php-gtk.com.br/book [Site do autor] http://www.pablo.blog.br [Site da Agenda] http://pagenda.php-gtk.com.br

    Pablo Dall'Oglio - [email protected] Pablo Dall'Oglio formado em Anlise de Sistemas pela UNISINOS. Autor do livro sobre PHP-GTK pela novatec edi-tora, programa em PHP-GTK desde sua criao em 2001. membro do time de documentao e criador da comuni-dade brasileira de PHP-GTK (www.php-gtk.com.br). Atualmente, diretor de tecnologia e proprietrio da Adianti Solutions (www.adianti.com.br), onde atua como consultor de tecnologia e engenheiro de software. Pode ser conta-tado pelo e-mail [email protected]. Pablo Dall'Oglio formado em Anlise de Sistemas pela UNISINOS. Autor do livro sobre PHP-GTK pela novatec editora, programa em PHP-GTK desde sua criao em 2001. membro do time de do-cumentao e criador da comunidade brasileira de PHP-GTK (www.php-gtk.com.br). Atualmente, diretor de tecno-logia e proprietrio da Adianti Solutions (www.adianti.com.br), onde atua como consultor de tecnologia e engenhei-ro de software. Pode ser contatado pelo e-mail [email protected].

  • PHP Magazine - 3a Edio - 7

    Grande parte dos vetores ou matrizes devem ser mesclados, divididos, tratados ou ordenados, para permitir que seus dados sejam trabalhados de forma mais adequada pelo sistema. Nas sees seguintes sero demonstradas algumas das funes da distri-buio nativa do PHP especficas para estas tarefas.

    1. Mesclagem, diviso e fatiamento de vetores

    possvel juntar vetores separados em um ni-co vetor ou ainda dividir um vetor em vrios vetores diferentes. No script a seguir, foi utilizada a funo array_merge() para mesclar os dois vetores $vetor01 e $vetor02 em um nico vetor $frutas. Esta funo pode ser utilizada para mesclar vrios vetores ao mesmo tempo. Para isso, basta acrescen-tar os vetores como argumentos na chamada da fun-o. O vetor $frutas foi, tambm, dividido em sub-vetores de trs elementos, no vetor $chunk atravs da funo array_chunk(). O terceiro argumento desta funo opcional. Se este argumento for omi-tido ou false, sero criados novos ndices numricos no vetor de sada, ou seja, apenas os valores dos ele-mentos sero passados. Caso seja true, os mesmos ndices do vetor de dados sero mantidos, sendo passados para o vetor de sada o valor e o ndice dos elementos. Por fim, uma fatia do vetor $frutas foi copiada para o vetor $slice atravs da funo ar-ray_slice().

    Observe no script a seguir que a funo foi cha-mada com a passagem de trs argumentos. O pri-meiro argumento o vetor de dados. O segundo ar-gumento um nmero correspondente ao ndice do primeiro elemento a ser copiado do vetor de dados. Se o ndice for positivo, o ndice ser contado a par-tir do primeiro elemento do vetor de dados, enquan-

    to que se for negativo, o ndice ser contado a partir do final do vetor de dados. O terceiro argumento, que pode ser omitido, o nmero de elementos que sero copiados para o vetor de sada. Se o nmero de elementos a serem copiados for positivo, ento ser copiado este nmero de elementos na direo do ndice para o final do vetor de dados. Se for ne-gativo, ser copiado este nmero de elementos na direo do ndice para o incio do vetor de dados. Por fim, se este argumento for omitido, o vetor de sada conter os elementos do ndice at o final do vetor de dados.

    As sadas nas telas, mostradas neste artigo

    foram obtidas atravs das funes show_vars() e print_a() da biblioteca debuglib, constituin-do importante recurso, tanto para programado-res recm-iniciados, quanto para aqueles com muitos anos de experincia. A biblioteca no faz parte da distribuio padro do PHP, no en-tanto, pode ser distribuda e utilizada gratuita-mente. O download pode ser feito em http://www.atomar.de/.

    LINGUAGEM

    Tratamento de Vetores e

    Matrizes em PHP Matrizes em PHP Matrizes em PHP Parte II Parte II Parte II

    por Leandro Schwarz

    As formas mais utilizadas para a criao e manipulao de vetores e matrizes j fo-ram explicadas na segunda edio, portanto, o objetivo deste artigo demonstrar ao leitor as funes especficas para ordenao de matrizes e vetores em PHP.

  • 8 - 3a Edio - PHP Magazine

    Figura 1 Sada da tela para o script anterior

    2. Inverso, reverso e embaralhamento

    O script acima apresenta a projeo na tela a-

    baixo. A explicao ser fornecida na seqncia. Inverso de um vetor significa tornar o primeiro

    elemento deste vetor o ltimo elemento de um novo vetor, o segundo elemento, o penltimo e assim por diante. No script seguinte, foi utilizada a funo ar-ray_reverse() para inverter o vetor $frutas em um outro vetor nomeado $reverse. Alm do vetor a ser invertido, possvel inverter tambm os ndices do vetor de dados, passando-se um segundo argumento opcional com valor true.

    A reverso de um vetor a troca dos valores dos elementos pelos seus ndices e vice-versa. A funo array_flip() realiza esta tarefa, bastando a-penas que seja passado o vetor a ser revertido, como pode ser visto no vetor $flip.

    O embaralhamento de vetores pode ser realiza-

    do atravs da funo shuffle(). Observe que esta funo baseada em um algoritmo pseudo-aleatrio, significando que para que haja uma alea-toriedade confivel, deve-se semear uma semente para o algoritmo antes do seu uso. Isto feito por meio da funo srand() associada funo microti-me(), que retorna a parte com o nmero de micros-segundos da hora atual.

    Figura 2 Sada da tela para o script anterior

    3. Ordenar os elementos do vetor

    Existem vrias funes especficas para ordenao de vetores. Nas sees seguintes sero demonstradas algumas delas. A funo sort() ordena os elementos de um vetor em ordem crescente. Alm do vetor a ser orde-nado, um argumento opcional pode ser passado de forma a identificar como os elementos devem ser comparados entre si. Se for passada a constante SORT_NUMERIC, os elementos sero comparados numericamente. Se for passado SORT_STRING, ser considerada a ordem alfabtica. Por fim, se o argumento no for passado, ser considerado o valor padro SORT_REGULAR, que faz a deteco automtica do tipo de comparao. A fun-o rsort() ordena os elementos de um vetor em ordem decrescente e funciona de forma anloga funo sort().

    As funes asort() e arsort() trabalham de forma anloga s funes sort() e rsort(), respectivamente. A nica diferena entre estes pares de funo que o par

  • PHP Magazine - 3a Edio - 9

    asort() e arsort() mantm os ndices originais do vetor de dados, enquanto que as funes sort() e rsort() criam novos ndices numricos.

    Para facilitar o entendimento do script seguinte, os vetores foram criados com o mesmo nome da fun-o que os chama. Observe tambm que estas funes so funes do tipo bool ou do tipo void, retornando true, false ou no retornando valor algum. Portanto, todas as alteraes so realizadas no prprio vetor. Por motivos didticos, o vetor clonado antes de ser pas-sado, para evitar que seus dados sejam modificados.

    O script anterior apresenta a projeo na tela abaixo.

    Figura 3 Sada da tela para o scrip anterior

    3. Ordenar os ndices do vetor As funes mostradas na sesso anterior orde-

    nam o vetor pelo valor de seus elementos, mas tam-bm possvel ordenar pelo valor de seus ndices, por meio do par de funes ksort() e krsort(). Estas funes so anlogas s funes sort() e rsort(), respectivamente, exceto por ordenarem o vetor ba-seadas nos valores dos ndices. Um exemplo de uti-lizao destas funes est demonstrado no script a seguir.

    Segue abaixo, a sada da tela obtida com o script

    anterior.

    Figura 4 Sada da tela para o script anterior

    4. Ordenar nomes de arquivos

    Se um vetor que guarda nomes de arquivos for ordenado pelas funes anteriores, erros podem o-correr, pois a comparao alfabtica de valores com letras e nmeros nem sempre facilmente identifi-cada pelo computador. Por exemplo, se os valores imagem1, imagem2 e imagem10 forem ordenados alfabeticamente, a ordenao resultaria imagem1, imagem10 e imagem2, nesta ordem. Considere o

  • 10 - 3a Edio - PHP Magazine

    script a seguir.

    Para solucionar este problema, foram uti-

    lizadas funes de ordenao baseadas num algoritmo de ordem natural. Este algoritmo visa simular a forma de ordenao do crebro humano, quando h caracteres alfabticos e numricos misturados. A funo natsort() realiza a ordenao alfabtica em ordem crescente baseada em um destes algoritmos de ordem naturais. A funo natcasesort() funciona de forma similar funo natsort(), porm, ela no faz distino entre caracteres maisculos e minsculos. A projeo na tela do script anterior segue na figura 5.

    Observe que para a funo natcase() con-sidera-se que caracteres maisculos prece-dem caracteres os minsculos. Isto se deve ao fato de os caracteres maisculos realmen-te precederem os caracteres minsculos na tabela ASCII. J a funo natcasesort real-mente no faz distino entre a caixa do ca-ractere, significando que, por exemplo, Apto14.jpg e apto14.jpg seriam considera-dos idnticos, sendo, portanto mantida a or-dem que foi colocada no vetor.

    Figura 5 Sada da tela para o script anterior

    Consideraes finais

    Este artigo apontou vrias funes que po-dem ser utilizadas no tratamento de vetores. Espera-se que este documento tenha elucidado o funcionamento das funes mais utilizadas para manipulao de vetores e matrizes. No en-tanto, a seo do manual do PHP que trata de vetores muito vasta, o que torna invivel a meno a todas elas. Se ainda assim, o leitor no encontrar no manual do PHP uma funo que realize a tarefa desejada, sugere-se que um algoritmo seja criado com base nas funes a-qui demonstradas. Referncias e links sugeridos [PHP Magazine] http://www.phpmagazine.com.br [Manual PHP] http://www.php.net [PHP Brasil] http://www.phpbrasil.com

    Leandro Schwarz - [email protected] Engenheiro eletricista pela Universidade Federal de Santa Catarina (UFSC). Atuando desde 2000 com desenvolvi-mento WEB, possui slidos conhecimentos em PHP e MySQL. Atualmente mestrando em Engenharia Eltrica no Instituto de Engenharia Biomdica da UFSC e projeta websites e lojas virtuais como autnomo. Engenheiro eletricista pela Universidade Federal de Santa Catarina (UFSC). Atuando desde 2000 com desenvolvimento WEB, possui slidos conhecimentos em PHP e MySQL. Atualmente mestrando em Engenharia Eltrica no Instituto de Engenharia Biomdica da UFSC e projeta websites e lojas virtuais como autnomo.

  • PHP Magazine - 3a Edio - 11

    Introduo Uma das maiores crticas ao PHP que a lin-

    guagem facilita os desenvolvedores a programarem cdigos sujos e de difcil manuteno.

    Normalmente, quem faz estas crticas conheceu PHP a alguns anos atrs, numa poca em que os de-senvolvedores no se preocupavam com a qualidade do cdigo e, tendo em vista a facilidade que a lin-guagem nos permite desenvolver, os desenvolvedo-res acabaram por criar cdigos do tipo 'macarronada', onde se misturavam HTML, PHP, Conexo com bancos de dados e etc. Tudo em um nico arquivo.

    Realmente este tipo de cdigo existiu e em al-guns locais ainda existem, porm, algumas tcnicas simples nos permitem criar um cdigo limpo e de fcil manuteno.

    O que cdigo de fcil manuteno?

    O cdigo de fcil extenso a ponto de novas funcionalidades serem adicionadas a ele?

    Depois de alguns meses, voc consegue enten-der o cdigo facilmente a ponto de adicionar funcio-nalidades nele?

    Outro desenvolvedor pode entender o cdigo facilmente a ponto de adicionar funcionalidades ne-le?

    Se a resposta for sim para todas as perguntas acima, seu cdigo de fcil manuteno e provavel-mente este artigo no lhe ser muito til. Caso a res-posta tenha sido no, sugiro que continue lendo este artigo, pois alguma coisa poder lhe servir.

    Quem vai trabalhar com esse cdigo?

    Neste artigo vamos pressupor que o cdigo ser manipulado por mais de um desenvolvedor. Mesmo que seja manipulado por apenas um desenvolvedor, interessante utilizar as tcnicas e ferramentas apre-

    sentadas.

    Codificao inline: um grande problema O que mais fcil de entender?

    if ($a>50) { echo 'Cdigo invlido'; } else { echo 'Cdigo vlido';} ou

    if ($a > 50) { echo 'Cdigo invlido'; } else { echo 'Cdigo vlido'; }

    Muitos desenvolvedores criam cdigos ilegveis

    por medo de ter um cdigo com mais linhas. Ora, melhor ter um cdigo maior, porm mais fcil de ler, do que um cdigo menor e mais difcil de ler.

    Outra forma de codificao bem comum : function somaDoisNumeros($num1,$num2) { return $num1+$num2; }

    No seria mais legvel se fosse assim? function somaDoisNumeros($num1,$num2) { return $num1+$num2; }

    Reescrever funcionalidades j existentes muito comum encontrar neste tipo de cdigo

    funes definidas pelo usurio que fazem a mesma coisa que uma funo interna do PHP. Isto alm de tornar o cdigo mais difcil de manter, ainda faz com que ele perca em performance, porque ele vai executar um procedimento em um nvel mais alto sendo que j existe esta funcionalidade pronta para ser executada em um nvel mais baixo.

    CODIFICAO

    Escrevendo cdigo PHP Escrevendo cdigo PHP Escrevendo cdigo PHP de fcil manuteno

    por Adler Bedriks Medrado

    Este artigo, voltado para desenvolvedores PHP iniciantes, mostrar algumas tcnicas que permitem a codificao de scripts PHP de fcil manuteno.

  • 12 - 3a Edio - PHP Magazine

    Ex: function converter_para_inteiro($numero) { return (int)$numero; }

    Evitar reescrever funes internas tambm aju-

    da na performance de sua aplicao, porque as fun-es internas so escritas em C, ou seja, j esto no core do PHP e no precisam passar pelo processo de compilao do PHP antes de serem executadas.

    Uso indiscriminado de constantes Em muitos cdigos so usadas constantes indis-

    criminadamente, isso favorece a difcil manuteno do cdigo, porque uma pessoa que nunca o viu ter que ficar pesquisando dentro do seu cdigo pela de-finio das constantes para saber o que se passa.

    Ex: define(QUEBRA_LINHA_HTML,); define(NEGRITO_INICIO,); define(NEGRITO_FIM,); echo Voc deve fazer o .NEGRITO_INICIO. login.NEGRITO_FIM. no sistema antes de usa-lo.QUEBRA_LINHA_HTML;

    Este cdigo poderia ser simplesmente assim: echo Voc deve fazer login no sistema antes de usa-lo.;

    Estas constantes que eu coloquei ainda so bem

    intuitivas, eu j encontrei algo assim: QBR_LN_HTML difcil ou no? Muitos desenvolvedores utilizam este mecanis-

    mo das constantes para no misturar HTML com PHP. No seria mais fcil resolver usando templa-tes ?

    Concatenando variveis Ao concatenar variveis, procure sempre, fazer

    da seguinte forma: $variavel = Este artigo fala sobre cdigo de fcil manuteno com PHP; $variavel .= Desta forma mais legvel; $variavel .= No acha?;

    No deixe a varivel grudada com os operador

    de atribuio e concatenao.

    Utilizando template engine Para no misturar HTML com PHP voc pode

    utilizar templates engine. O mais utilizado atual-mente Smarty. Utilizando uma template engine, voc separa o cdigo PHP do cdigo HTML, tor-nando assim a integrao entre os dois mais limpa e

    permitindo que o web designer de sua equipe traba-lhe mais confortavelmente, sem ter medo de alterar nenhum cdigo PHP por engano. Lembre-se: Nem sempre o webdesigner programa em PHP.

    Padres de codificao Tenha um padro de codificao, pois assim

    sempre mais fcil entender o cdigo. Voc no precisa criar um padro de codifica-

    o do zero. Voc pode incorporar nos seus cdigos o padro de codificao de frameworks, que j esto consolidados como o padro utilizado pelo PEAR ou o padro utilizado pelo Zend Framework. Se vo-c no quiser utiliz-los como o seu padro oficial, voc pode t-los como exemplo e adapt-los as suas necessidades.

    muito mais fcil ter um cdigo onde todas as variveis tenham o padro 'camelCaps', onde vari-veis iniciam com a primeira letra em minscula e as demais palavras com maisculas, exemplo: $colecaoUsuarios, $objConexao

    ao invs de usar assim:

    $COLECAOUSUARIOS, $Colecaousuarios.

    Viu a diferena?

    Comentrios Inicie todo o seu cdigo com um bloco de co-

    mentrio com informaes sobre aquele respectivo arquivo, data de criao, o que falta fazer (TODO), bugs a serem corrigidos (FIXME), etc.

    Ex: /* * CLASSE DE CONEXO COM BANCO DE DADOS * * Esta classe implementa uma camada de conexo ao banco de dados MySQL * utilizando PDO e etc, etc, etc, * * author: Adler Medrado * date: [email protected] * * TODO: Implementar mtodo de controle de transaes * FIXME: mtodo lastInsertID no retorna a in-formao correta */

    No use comentrios de uma linha que sejam bvio, por exemplo: // Este mtodo grava usurio no banco public function gravaUsuarioNoBanco() { // Aqui ele executa o mtodo inserir $this->inserir(); }

  • PHP Magazine - 3a Edio - 13

    Voc pode usar tambm o PHPDocumentor que, por meio dos blocos de comentrios, gera uma documentao parecida com o Javadoc. Ele tambm bem interessante.

    Controle de verso Para uma aplicao que modificada constante-

    mente, interessante utilizar softwares de controle de verso como o CVS, CVSNT ou SVN, mesmo que voc seja o nico desenvolvedor da aplicao.

    Ferramentas de trac so bem-vindas mesmo que seja para mostrar as mensagens de commit detalha-damente.

    Abstrao de banco de dados

    Escrever suas classes de abstrao uma boa, pois permitir que qualquer mudana em relao a banco de dados na sua aplicao, seja feita apenas nestas classes e no na aplicao como um todo.

    Usar PDO uma boa idia, pois esta extenso est se tornando um padro para o desenvolvimento PHP, mas existem outras classes de abstrao pron-tas, como a ADOdb por exemplo.

    Utilizando frameworks

    Voc pode utilizar um framework porque eles j implementam os padres descritos anteriormente e j possuem abstrao para banco de dados, por exemplo, alm de implementar a maioria dos pa-dres de projetos (design patterns). Outro ponto em utilizar frameworks j existentes que muitos possuem as camadas bem definidas, e

    pelo fato de serem cdigo aberto (open-source), a correo de bugs freqente.

    Existem timos frameworks em PHP - eu diria at que existem frameworks demais - como o Cake, o Symfony e o Zend Framework.

    Usando o framework, qualquer pessoa que for dar manuteno no cdigo ter de conhecer os pa-dres do framework. Sendo assim, uma boa parte na hora de entender o cdigo por parte do novo desen-volvedor ser poupada.

    Concluso Este artigo visou demonstrar bem simples e di-

    retamente algumas tcnicas para que seu cdigo seja de fcil manuteno. Existem outras tcnicas que infelizmente no foram includas neste, porm, par-tindo destas dicas seu cdigo ser mais legvel, mais limpo e at mesmo mais gil.

    Qualquer dvida, por favor entrem em contato comigo por e-mail. Referncias e links sugeridos [Subversion] - http://subversion.tigris.org/ [CVSNT] www.cvsnt.org [Symfony] - www.symfony-project.com/ [Cake] http://www.cakephp.org [Zend Framework] http://framework.zend.com [Smarty] http://smarty.php.net [PDO] http://www.php.net/pdo [Site Pessoal] www.neshertech.net/adler [Nesher Technologies] http://www.neshertech.net [PHPDF] http://www.phpdf.org.br

    Adler Brediks Medrado - [email protected] Analista e desenvolvedor, utiliza PHP na maioria dos seus projetos. Atualmente presta servios em um rgo federal em Braslia e instrutor de cursos PHP na X25 Treinamento e Con-sultoria. Alm disso, tambm proprietrio da empresa Nesher Technologies que presta servios de consultoria pa-ra empresas do Brasil e do exterior. Membro da equipe de coordenao do Grupo de usurios PHP do Distrito Federal (PHPDF).

  • 14 - 3a Edio - PHP Magazine

    At pouco tempo estudar era visto meramente como um simples ato de ir a uma instituio de ensi-no, assistir as aulas e tentar entender os assuntos lecionados. Hoje, em muitos lugares, essa viso continua a mesma, porm, j existe uma vertente em prol de uma nova viso: a de que o professor ape-nas o mediador no processo de aprendizagem.

    Mediador, nesse contexto aquele que no o dono da verdade, mas que tenta traar um caminho para que seus alunos possam descobrir suas prprias verdades por meio de bases slidas de experincias e vivncia auxiliadas por ele, e a partir da construir seu prprio conhecimento.

    O importante fazer com que o aluno evolua em seu prprio ritmo sem, no entanto, desprend-lo de um determinado grupo. Para que isso acontea so necessrias ferramentas que mantenham a aten-o desse indivduo de tal forma que ele seja induzi-do a fazer atividades necessrias para seu aprendiza-do de maneira espontnea e at, por que no, praze-rosa.

    A esse tipo de pensamento denomina-se cons-trutivismo, onde o estudante constri seu conheci-mento atravs de pequenas atividades individuais ou coletivas [1]. Teorias como o construtivismo, beha-viorismo e o cognitivismo tentam descrever como o processo de aprendizagem acontece.

    Hoje, existem vrios ambientes instrucionais que acolhem a essas teorias pedaggicas, dando en-foque mais para uma do que para a outra. No entan-to, necessrio saber qual utilizar em cada situao.

    Na modalidade de ensino a distncia existem os Ambientes Virtuais de Aprendizagem, tambm co-

    nhecidos por vrias outras denominaes, dentre elas a LCMS (Learning Content Management Sys-tem), que ser abordado neste texto. No geral, po-rm esses ambientes cumprem com o mesmo objeti-vo: disponibilizar contedos de aprendizagem, e em alguns casos gerenci-los, sendo que geralmente utilizam uma ou vrias dessas teorias pedaggicas em suas estruturas.

    Nos prximos tpicos sero descritos de forma sucinta esses ambientes, suas caractersticas bsicas, uma pequena anlise e as expectativas referentes possveis melhoras em seu desenvolvimento.

    O que so LCMS

    Antes de entrar no conceito de LCMS (Learning Content Management System), interes-sante entender o significado de trs outras siglas: CMS, LMS e RLO.

    O CMS (Content Management System) ou Sis-tema de Gesto de Contedo um software que se destina agregao de vrios contedos de forma a gerenci-los. Os blogs so exemplos de CMS, ou seja, voc envia um texto e o software mantm a organizao atravs da criao de categorias (dias, ms, ano, outros), mantendo para isso mecanismos de publicao em que o usurio s tem que se preo-cupar com o seu texto.

    Um CMS, contudo, possui uma utilizao mui-to mais ampla que apenas o gerenciamento de con-tedos de blogs, possui vrias funcionalidades co-mo, por exemplo, a de administrao de artigos, m-dias, sites, relatrios, lojas e cursos. O seu principal foco possibilitar a agilizao do processo de publi-

    GERENCIADOR DE CONTEDO

    Ambientes de livre distribuio para gerenciamento de contedo de aprendizagem

    por Josiane Lima de Oliveira

    Neste artigo ser feita uma c breve introduo aos Ambientes Virtuais de Gerencia-mento de Contedo de Aprendizagem, dando destaque para os de distribuio livre, bem como suas caractersticas bsicas, uma pequena anlise e as expectativas para o futuro desses ambientes em relao educao a distncia.

  • PHP Magazine - 3a Edio - 15

    cao, por meio de ferramentas WYSIWYG (What You See Is What You Get), ou seja, o que voc v o que voc tem, e claro o gerenciamento de tais con-tedos [2]. Exemplos de CMS muito utilizados so o Joomla, Drupal, Mambo, Wordpress e PHPNuke. No site cmsmatrix.org podem ser feitas algumas comparaes entre esses sistemas.

    O LMS (Learning Management System) ou Sistema de Gesto de Aprendizagem um CMS, porm, seu contedo voltado para aprendiza-gem. Ele responsvel pelo gerenciamento de cursos, que por sua vez so criados por outras ferramentas, uma vez que, este no possui capa-cidade de gerao de contedo educacional. Por essa razo, no h como personalizar o ambien-te. Aps o curso ser criado, no possvel a reu-tilizao de partes, somente do todo, ou seja, os usurios sempre tm o mesmo curso disponvel.

    Os RLO (Reusable Learning Objects) ou Objetos de Aprendizagem Reutilizveis possibi-litam uma melhor padronizao no desenvolvi-mento de ambientes virtuais de ensino, garantin-do assim uma gesto mais completa de seus con-tedos. Um padro muito conhecido que utiliza essa tecnologia o SCORM (Sharable Course-ware Object Reference Model) ou Modelo de Referncia para Objetos de Contedos Compar-tilhveis.

    Os RLO possibilitam desmembrar um deter-minado contedo em partes menores, como m-dulos, que podem ser reutilizados em diferentes ambientes. Esses pequenos mdulos possuem a menor informao possvel integrando objetivo, atividade e avaliao da aprendizagem [3].

    Alm de possibilitarem a reutilizao de partes do contedo em outros cursos ou ambien-tes, os RLO tambm possibilitam uma melhor personalizao do ambiente, uma vez que o usu-rio, mais especificamente o aluno poder sele-cionar quais mdulos pretende fazer e quais ati-vidades. Em contra partida, os instrutores e ad-ministradores podero disponibilizar aos poucos seus materiais e ferramentas de comunicao, bem como melhor-los atravs do acmulo de conhecimento adquirido com a sua utilizao.

    Por fim, o Sistema Gestor de Contedo de Aprendizagem (LCMS), o ambiente que agrega todos os conceitos vistos at aqui: CMS + LMS + RLO. Um LCMS tem como objetivo central gerenciar, elaborar e postar contedos instrucio-nais ou RLO [2]. Alguns autores tambm o de-nominam de Ambiente Virtual de Aprendiza-gem, ou VLE (Virtual Learning Environment) [4].

    Requisitos para um Sistema de Gerencia-mento de Aprendizagem

    Um Sistema Gestor de Contedo de Aprendiza-gem deve ser capaz de no mnimo prover ferramen-tas de comunicao sncronas e assncronas.

    As ferramentas de comunicao sncronas so aquelas que tentam simular de forma on-line um ambiente de ensino presencial, atravs de mensa-gens instantneas, chat, udio e vdeo, por exemplo. Podemos consider-las como sendo em tempo real. Enquanto que as ferramentas assncronas so aque-las que no precisam de comunicao em tempo real como, por exemplo: e-mail, frum, glossrio, etc. [5].

    conveniente que um LCMS se apie em algu-ma teoria pedaggica como o construtivismo, beha-viorismo e o cognitivismo, ou em vrias, de modo que possa ser direcionado para determinado grupo, o qual possa fazer melhor uso do sistema atravs do conhecimento prvio dos objetivos a serem alcana-dos.

    Outras caractersticas interessantes de se faze-rem presente nesse tipo de ambiente esto listadas a seguir:

    Disponibilidade, possibilidade de acesso em qualquer lugar e a qualquer hora;

    Versatilidade, articulao de contedos multi-mdia no processo de ensino-aprendizagem;

    Espao para troca de idias, feedback e pes-quisas (fruns, enquetes, dilogos, chat);

    Ferramentas de trabalho colaborativo (wikis, glossrios);

    Ferramentas de avaliao (testes do tipo quiz, questionrios, provas);

    Ferramentas de gesto (entrega de trabalhos, notas, grupos, agendas);

    Possibilidade de apresentao dos contedos em vrios idiomas;

    Acessibilidade, possibilitando que pessoas com deficincias possam ter acesso ao material.

    Portabilidade, permitindo que o LCMS possa ser instalado em Sistemas Operacionais dife-rentes e que possa ser acessado em diferentes tipos de computadores;

    Distribuio livre, inclusive com o cdigo fonte, garantindo maior conhecimento da fer-ramenta e conseqente desenvolvimento e me-lhoramento de funes.

    Atualmente muitos LCMS de distribuio livre j possuem a maioria dessas caractersticas, possibi-litando a um maior nmero de pessoas o acesso a essa tecnologia. Isso proporciona o aumento de co-munidades de desenvolvimento e distribuio de material referente s mesmas, o que s vem a contri-

  • 16 - 3a Edio - PHP Magazine

    buir com a sua melhoria e divulgao.

    Vantagem na utilizao desses Sistemas Os LCMS podem ser utilizados tanto para cur-

    sos presenciais quanto a distncia. O seu principal objetivo servir de apoio ao aprendizado e, portanto integrasse muito bem em qualquer um desses mode-los de ensino.

    Analisando os principais atores do LCMS: ad-ministrador, tutor e aluno, podemos destacar as se-guintes vantagens mais evidentes, respectivamente:

    Administrador como o contedo centrali-zado atravs da utilizao de bancos de dados, o administrador possui maior domnio sobre o que est sendo feito em cada curso, podendo excluir, editar e adicionar ferramentas aos mesmos e gerenciar contas de usurios;

    Tutor esse elemento geralmente represen-tado pelo professor, que atravs do domnio do ambiente gerencia os contedos de suas aulas, o andamento dos seus alunos e determi-na o ritmo do curso;

    Aluno existem diversas ferramentas de apoi-o ao aluno, como frum, chat, e-mail e outras que podem ser utilizadas para tirar dvidas, enviar trabalhos, enviar sugestes, etc. O alu-no tambm pode ter acesso, em alguns casos, ao seu desempenho atravs de notas e testes de avaliao no estilo quiz, com o resultado on-line.

    O LCMS pode ser utilizado tanto como ferra-menta de apoio, como ambiente de aula, ou seja, como um elo entre aluno e professor sem a necessi-dade da presena fsica.

    A maioria dos LCMS j suporta padres como o SCORM, o que garante que o curso seja reutiliza-do e reformulado vrias vezes.

    Anlise de Sistemas de Gerenciamento de Aprendizagem

    O objetivo dessa anlise ser selecionar LCMSs que tenham recursos como: ferramentas de comuni-cao, produtividade e administrativas, alm de su-porte a lngua portuguesa e licena GNU. No ser feita uma explorao mais detalhada de cada siste-ma porque o foco principal somente indicar quais possuem uma melhor adaptao ao pblico que bus-ca por educao a distncia de forma rpida e com bastante material para tal, sem, no entanto, excluir as demais.

    Os recursos referentes s ferramentas de comu-nicao devem incluir mecanismos sncronos e as-sncronos. As ferramentas de produtividade devem possibilitar melhor ajuda de contexto, consulta off-

    line do material, calendrio e busca, por exemplo. J as administrativas englobam os aspectos de gerenci-amento de cursos, material, alunos e das prprias ferramentas de comunicao.

    A licena GNU se deve ao fato do cdigo ser aberto, o que gera um maior nmero de pessoas em-penhadas em seu projeto, maior nmero de comuni-dades e conseqentemente de material e suporte.

    A questo do suporte em lngua portuguesa outro ponto importante, pois permite um melhor uso das ferramentas tanto por administradores, que no tero que ficar traduzindo, quanto para professores e alunos que podero com uma simples leitura enten-der qual a funo de determinadas ferramentas.

    Como o objetivo dessa anlise somente elimi-nar ferramentas que possuam poucos recursos, foi utilizado para um primeiro nivelamento um site es-pecializado em fazer comparaes entre diferentes Sistemas de Gesto de Contedo de Aprendizagem: o Edutools [6]. Outro site tambm muito interessan-te para fazer esse tipo de anlise o Open Source CMS [7].

    A seleo foi feita da seguinte forma: primeiro foi verificado quais possuam licena GNU, em se-gundo a variedade de recursos teis, e por ltimo a disponibilidade de material na Internet e suporte em lngua portuguesa.

    Na primeira seleo muitas ferramentas possu-am licena GNU, mas algumas no tinham recursos essenciais como Chat ou possuam pginas pouco intuitivas e na sua grande maioria, no tinham co-munidades em portugus difundidas.

    Restaram para uma segunda seleo quatro LCMS muito interessantes: Claroline, Sakai, ATu-tor e o Moodle. Todos eles com muitos recursos e interface clara e agradvel. Porm, o Projeto Sakai ainda no muito utilizado no Brasil e, devido a esse fato, pouco material sobre o mesmo foi encon-trado em portugus, sendo excludo desta forma da prxima etapa da seleo. O Claroline tambm foi excludo devido falta de segurana em torno de sua continuao, uma vez que j possui inclusive outro projeto baseado no mesmo cdigo, o Dokeos [4].

    Por fim, restaram apenas dois projetos: Atutor e o Moodle. Destes dois, somente o Moodle possui diversidade de material em portugus. Contudo, ser feita uma pequena descrio do Atutor, por possuir caractersticas que o diferenciam, como o seu signi-ficativo foco em acessibilidade.

    Moodle O Moodle (acrnimo de Modular Object-

    Oriented Dynamic Learning Environment) sem

  • PHP Magazine - 3a Edio - 17

    dvida o mais completo LCMS GNU atualmente. Isso se deve ao fato dele ser gratuito, ter traduo para o portugus, ampla documentao e diversas comunidades e, alm de tudo, tem um forte apelo pedaggico baseado no construtivismo social.

    Site do Moodle

    Assim como a grande maioria dos LCMS, o

    Moodle desenvolvido em PHP e suporta diversos bancos de dados, com destaque para o Mysql. Devi-do a essas caractersticas, pode ser instalado facil-mente em servidores web com suporte a PHP e a base de dados, sendo leve e compatvel com a maio-ria dos navegadores, inclusive os de tecnologia mais antiga. [8]

    O Moodle est divido em vrios mdulos e pos-sui trs nveis de viso: do administrador, do tutor e do aluno. O administrador o responsvel pela ma-nuteno do site, atravs da incluso de extenses e at a modificao do cdigo PHP, se necessrio. O tutor tem pleno poder de modificar o curso, inserin-do ou excluindo mdulos, bem como escolhendo seu tipo, que pode ser semanal, por tpico ou por discusso. O aluno alm de ter a sua disposio fer-ramentas para sua auto-avaliao, ainda conta com outras para comunicao, como os chats, e-mail, fruns, etc.

    Para complementar, o Moodle compatvel com o SCORM e possui os seguintes mdulos: Ta-refa, Chat, Pesquisa de Opinio, Frum, Question-rio, Recursos, Pesquisa de Avaliao e Laboratrio de Avaliao.

    ATutor

    O ATutor, assim como o Moodle, uma ferramenta voltada para a gesto de cursos de aprendizagem, porm, seu principal foco est na acessibilidade e facilidade de uso de seus recursos. Ele possui licena GNU e um ambi-ente totalmente desenvolvido em PHP, estando de acordo com o padro SCORM e com as es-pecificaes de acessibilidade W3C WCAG 1.0.

    Site do ATutor

    A acessibilidade possibilita que pessoas com

    determinadas deficincias ou que possuam equipa-mentos mais antigos e conexo lenta possam ter a-cesso ao contedo do site, assegurando desta forma uma maior aceitao e um pblico mais diversifica-do. No ATutor podemos verificar vrias caractersti-cas referentes a essa funo. Dentre elas, temos: te-clas de atalho e de acesso, configurao de prefern-cia de acessibilidade a priori (que oculta imagens e controles desnecessrios), textos alternativos para imagens, rtulos em formulrios, foco para campos de formulrio, ampliao de imagens e possibilida-de de alterao da interface atravs de folhas de es-tilo [9].

    O padro SCORM permite que o contedo dos cursos seja exportado ou importado de/para outras ferramentas com o mesmo padro. Outra caracters-tica interessante a possibilidade de exportar o con-tedo do ATutor em pacotes de contedo, podendo acess-los off-line.

    Expectativas para o futuro desses Sistemas

    Atualmente, combinaes entre diferentes tec-nologias tm sido utilizadas para se chegar a uma comunicao mais efetiva nas aulas a distncia. Um exemplo disso o uso do LCMS em conjunto com o Skype. Sendo que o LCMS utilizado efetivamente como o ambiente de estudo, onde se encontram to-dos os roteiros das aulas, avisos, materiais, chats, e-mail e fruns, e o Skype servindo como um apoio aula, propiciando comunicao atravs de udio e vdeo. Grande maioria dos LCMS gratuitos no ofe-rece esse recurso. Junto com o Skype, muitas vezes tambm utiliza-se um plugin chamado Festoon, que dentre outras funes possibilita compartilhar o desktop do computador, outra caracterstica ausente em LCMS atualmente.

    Alm do Skype, muitos outros softwares so utilizados, como o Windows Live Messenger, Ya-hoo Messenger e o Talk. Porm, a necessidade de utilizao est mais evidenciada quando a comuni-

  • 18 - 3a Edio - PHP Magazine

    cao visual for indispensvel. Outra tecnologia que j vem contribuindo com

    a educao a distncia a televiso. Aqui no Brasil, um bom exemplo o Telecurso da Fundao Rober-to Marinho, em que o aluno tem a possibilidade de assistir as aulas e praticar os exerccios em sua pr-pria casa.

    Com o surgimento da televiso digital, criou-se uma grande expectativa com relao a seu uso em EAD, pois a mesma possibilita a integrao entre vrios meios de comunicao, como internet, rdio e televiso. Tal integrao possibilitar o desenvol-vimento de programas de EAD que envolvam todos os benefcios j citados, como comunicao por v-deo e udio, utilizao de LCMS. Tudo ao mesmo tempo em apenas um equipamento (e acessrios ne-cessrios). Porm, o uso dessa tecnologia ainda vai tardar, pois o seu custo ainda muito alto e sua im-plantao ainda est em andamento no Brasil.

    Voltando para a realidade atual, mais especifi-camente ao que se possui de mais palpvel, em se tratando de EAD, a Internet oferece, como foi anali-sado anteriormente, meios de comunicao entre grupos de pessoas que estejam participando de cur-sos a distncia. Porm, muito ainda tem que ser me-lhorado, principalmente quando o tema em questo a universalizao da educao, ou seja, garantir que o conhecimento seja passado para qualquer pes-soa, independente de deficincias fsicas ou da pla-taforma de acesso.

    Garantir que pessoas com deficin-cia fsica tenham acesso ao conte-do de um LCMS deveria ser priori-zado, uma vez que a tecnologia para isso tem evoludo a cada dia e facilitado tal integrao. Exemplos disso so softwares que permitem a leitura de textos: o Dosvox [14] e o Webbie (browser para deficientes

    visuais) [15]; linguagem de sinais como o player da Ryben [13] (imagem ao lado); e, claro, os padres de acessibilidade para web.

    Os padres de acessibilidade para web definem regras de validao para que uma pgina seja consi-derada acessvel, dentre elas podemos citar: sintaxe

    do HTML, sintaxe de CSS, uso correto de tabelas, descrio de imagens, etc. Para tal, existem diversas ferramentas de validao como: o DaSilva [10], o Hera [16] e o Examinator [17] [11].

    A garantia de acessibilidade da web no tudo. Para que um site possa ser realmente acess-vel ele deve ter usabilidade, ou seja, deve ser f-cil de usar e prover diversas formas para que isso acontea. De que adianta um LCMS, com design sofisticado, muitas ferramentas de comunicao, mas pssima navegabilidade pelo teclado e in-compatibilidade com navegadores mais antigos ou pouco usados? Para que isso no acontea necessrio, no somente usar essas ferramentas de validao, mas tambm testar com vrios usu-rios e com as mais diversas dificuldades e plata-formas, para s assim ter alguma garantia de que o software acessvel a todos ou pelo menos para a grande maioria [12].

    Referncias [1] http://fgsnet.nova.edu/cread2/pdf/Andrade.pdf [2] http://www.elearningbrasil.com.br/ [3] http://www.abed.org.br/publique/cgi/cgilua.exe/s y s / s t a r t . h t m ?UserActiveTemplate=1por&infoid=883&sid=135 [4] http://www.ginux.ufla.br/documentacao/monografias/mono -HudsonPires.pdf [5] www.iscap.ipp.pt/paol/docs/repositorio/introd_elearning.pdf [6] http://www.edutools.info/ [7] http://www.opensourcecms.com/ [8] http://docs.moodle.org/pt/ [9 ]h t t p : / /www. t t i s sa .o rg / e - l ea rn ing /he lp /accessibility.php?lang=pt-br [10] http://www.dasilva.org.br/ [11] http://www.bengalalegal.com/validacao.php [ 1 2 ] h t t p : / / w ww . b e n g a l a l e g a l . c o m /teoriaepratica.php [13] http://www.rybena.com.br/ [14] http://intervox.nce.ufrj.br/dosvox/ [15] http://www.webbie.org.uk/ [16] http://www.sidar.org/hera/ [ 1 7 ] h t t p : / / www . a c e s s o . um i c . p t / w e b a x /examinator.php

    Josiane Lima de Oliveira - [email protected] - www.josianeolive.blogspot.com Formada em Tecnologia em Processamento de Dados pela Universidade Federal do Par. Atua desde 2004 como Analista de Suporte na Empresa de Processamento de Dados do Estado do Par (PRODEPA) e no desenvolvimento de pginas web de forma autnoma. Formada em Tecnologia em Processamento de Dados pela Universidade Federal do Par. Atua desde 2004 como Analista de Suporte na Empresa de Processamento de Dados do Estado do Par (PRODEPA) e no desenvolvimento de pginas web de forma autnoma.

  • PHP Magazine - 3a Edio - 19

    Um pouco sobre o PDT O PDT (PHP Development Tools), que inicial-

    mente se chamava PHP IDE Project, um projeto que fornece uma ferramenta de desenvolvimento baseada na plataforma Eclipse. O projeto abrange o desenvolvimento de componentes necessrios para se desenvolver em PHP e facilitar a sua extensibili-dade.

    Os princpios do projeto so: aprendizado fcil e intuitivo; integrao sem remendos com o WTP; aderncia ao padro Eclipse; capacidade de extenso; apoio contnuo de desenvolvedores PHP. O Eclipse Web Tools Platform Project (WTP)

    prov APIs para desenvolvimento J2EE e centrados em web. Voc pode baixar o PDT no seu site do portal da Eclipse Foundation (http://download.Eclipse.org/tools/pdt/downloads/). O re-lease que vamos utilizar aqui o 0.7 RC3 estvel, que foi gerado em cinco de abril deste ano. Os testes foram feitos em ambiente Windows com o pacote completo do PDT (PDT All-in-One).

    Aps baixarmos o zip, o descompactamos em um diretrio qualquer do disco, abrimos a pasta E-clipse e executamos o arquivo eclipse.exe. Esta foi a instalao. simples e breve. No se esquea que o Eclipse feito em Java, portanto necessita de uma Virtual Machine Java instalada.

    Na primeira tela que exibida voc deve definir o diretrio de trabalho do Eclipse. Voc pode ter

    mais de um na mesma mquina de modo a melhor organizar seus projetos.

    Figura 1 Definindo Workspace no PDT

    Aps escolhida a rea de trabalho, o Eclipse

    termina de carregar seus mdulos e est pronto para ser usado em seus projetos. Lembramos que esse mesmo Eclipse baixado pode ser utilizado no s com PHP, mas tambm com qualquer outra lingua-gem suportada pelo mesmo. Essa uma das vanta-gens em ambientes de desenvolvimento que utili-zam mais de uma tecnologia: ter apenas um ambien-te de desenvolvimento padro.

    Antes de criarmos um projeto, vamos falar um pouco das configuraes do PDT. Acessando o me-nu Window, item Preferences..., iremos visualizar o item PHP contendo as principais configuraes de projetos PHP. Nesta parte voc pode configurar de-talhes de execuo, como se o padro utilizar PHP 4 ou 5, detalhes de debug, detalhes do editor, tem-plates utilizados na digitao ou na criao de novos

    IDE

    Um pequeno tour pelas IDEs: PDT, Delphi e Dreamweaver CS3PDT, Delphi e Dreamweaver CS3PDT, Delphi e Dreamweaver CS3

    por Adler Medrado Flvio Fagundes Ricardo Arago

    Nesta edio optamos por apresentar aos nossos leitores um pequeno tour por algu-mas das IDEs mais conhecidas pela comunidade. No foi possvel explorar ao mximo cada uma delas, devido a questes de espao, mas esperamos que o pouco aqui a-presentado, permita ao leitor ter uma viso melhor sobre cada uma delas.

  • 20 - 3a Edio - PHP Magazine

    arquivos, e detalhes do servidor padro em que as fontes ficaro, o que no necessita ser no diretrio da rea de trabalho.

    Fora da parte especfica do PHP nas configura-es, importante verificar alguns de-talhes que possam atrapalhar o seu pro-jeto. No item General/Workspace, voc deve definir qual a codificao de ca-racteres deseja utilizar para arquivos texto. Voc tambm pode fazer essa definio por extenso de arquivo. Bas-ta selecionar o General/Content Types e expandir a rvore direita e ir at o i-tem PHP. Nele voc pode modificar a codificao para todas as extenses de PHP. Isto importante principalmente se voc vai importar projetos j existen-tes para o PDT. Na maioria das vezes os editores utilizam a codificao LA-TIN-1 (ISSO-8859-1).

    Estas configuraes podem ser feitas de modo que todos em um ambiente de desenvolvimento tenham o mes-mo padro, bastando modific-las e depois compactar no-vamente o Eclipse e redistribu-lo aos desenvolvedores. Tudo de uma forma muito simples.

    At o momento, no vimos o potencial do PDT no desenvolvimento. Ento, vamos criar o nosso primeiro projeto PHP, atravs do menu File/New/Project. Desse modo teremos uma janela de wizard com o tipo de projeto que desejamos, no caso um PHP Project. Avanando teremos uma janela onde preencheremos o nome do projeto, o local de arma-zenamento dos fontes, que pode ser diferente do workspace, e qual a verso do PHP utilizar.

    Figura 2 Definindo um projeto

    Aps criado o projeto, voc pode criar seus ar-quivos PHP, HTML, JavaScript, CSS, ou qualquer outro que seja necessrio. A janela abaixo mostra um projeto aberto no PDT.

    Figura 3 Interface do PDT

    Nesta janela podemos perceber a quantidade de

    funcionalidades que o Eclipse fornece, como a rvo-re do projeto, o outline com as classes, funes e dentre outras, a sada do debug, o browser output, erros direto no cdigo fonte, sada no console, etc. Cada desenvolvedor pode organizar as subjanelas do seu melhor modo. Lembramos que para rodar o debug e a execuo dentro do Eclipse, necessria a configurao de mais alguns itens que no ser mos-trado nessa matria.

    Um ponto importante o que mais o Eclipse pode nos fornecer como IDE, alm do PDT. Um bom exemplo a integrao com sistemas de con-trole de verso, como o CVS, nativamente, e com o Subversion, atravs do plugin subclipse. H diversos outros plugins que podem ser utilizados em conjun-to, como para UML, para acesso e gerenciamento de banco de dados, implantao, etc.

    A verso 1.0 est prevista para setembro deste ano. Abaixo algumas melhorias e novas caractersti-cas principais:

    interface grfica genrica para Zend Debugger e XDebug;

    melhoria do parser e do modelo de infraestru-tura;

    preferncias na execuo do PHP; suporte a annotations; suporte inicial a refatorao integrar editores de HTML, CSS e JavaScript O nico pesar do Eclipse que como feito em

    Java necessita de uma mquina razovel com um mnimo de 512MB de RAM, pois o que utilizamos,

  • PHP Magazine - 3a Edio - 21

    assim que ele foi iniciado, consumiu 77 MB em u-ma mquina com 512MB.

    O PDT surge para se tornar uma grande plata-forma de desenvolvimento livre para o PHP. S o apoio da comunidade pode melhor-lo ou destru-lo. Como o seu desenvolvimento uma parceria da IBM com a Zend, podemos esperar at uma boa integrao com o Zend Framework.

    Apresentando o Delphi for PHP Esta IDE foi lanada em Mar-

    o de 2007 aps a parceria firma-da entre a Qadram Software Deve-lopment e Codegear/Borland aten-dendo necessidade de alguns de-senvolvedores que desejavam uma ferramenta que permitisse gerar cdigo PHP manipulando os obje-tos visualmente. A ferramenta praticamente baseada nos compo-nentes denominados VCL, que so escritos em PHP5 e, em diversos casos, apenas abstrai o acesso a componentes j existentes e bem conhecidos dos desenvolvedores PHP como AdoDB, Xajax, JsCalendar, entre outros.

    Apesar de o Delphi for PHP ser uma fer-ramenta proprietria, a biblioteca VCL software livre e baseada na licena LGPL. Alguns componentes suportam o uso a Ajax e tornam bem simples a maioria das tarefas.

    Um pequeno exemplo

    Seremos objetivos criando um exemplo com um grid usando MySQL. Primeiramente vamos cri-ar um projeto:

    Figura 4 Definindo um projeto PHP no Delphi

    Selecionamos Application e aps clica-se em ok, e o projeto ser criado. Na seqncia, surgir ser a interface abaixo. A viso de design e nenhum objeto gerado at o momento.

    Figura 5 Interface principal da IDE na viso design

    Em seguida, clicamos na aba Data Explorer, no

    lado direito da tela e configuramos uma conexo com o banco MySQL.

    Figura 6 Configurando uma conexo com o MySql

  • 22 - 3a Edio - PHP Magazine

    Aps selecionar o banco, arrasta-se uma tabela para o stage e pronto. Nosso grid est criado, con-forme a figura seguinte.

    Figura 7 Grid criado

    Ao executar a aplicao definida acima em um

    browser, o resultado apresentado ser semelhante ao da figura seguinte.

    Figura 8 Resultado apresentado da execuo da aplicao no Internet Explorer

    Fazer um grid como esse, com recursos que

    permitem a edio sem reload da pgina e sem o intermdio de uma ferramenta dessas, mais com-plexo e, por mais que voc j tenha os componentes prontos, voc no tem essa produtividade oferecida pelo Delphi for PHP.

    O Cdigo PHP gerado para o programa acima foi:

    Debugger interno e compatibilidade do cdigo gerado

    O Delphi conta com um debugger interno, cha-mado PHP DBG Listener, que um debbuger que possui verso free e verso comercial. Este o de-bugger para PHP mais conhecido e tem sua qualida-de comprovada pela comunidade. A verso Free j suficiente para a maioria dos desenvolvedores e foi adotada pelo Delphi for PHP. Podemos controlar o DBG por meio da IDE, incluindo e retirando Bre-akpoints.

    O cdigo gerado pelo Delphi for PHP compa-tvel apenas com PHP5. Inicialmente , foi divulgado que o cdigo seria compatvel com PHP a partir da verso 5.1, porm, devido a mudanas na extenso filter do PHP, o cdigo deve ser compatvel apenas com a verso 5.2+. Suporte a bancos de dados

    Atualmente, a ferramenta gera cdigo compat-vel apenas com MySQL e Interbase, porm, por uti-lizar como base a biblioteca AdoDB, possvel alte-rar isso aps o build da sua aplicao ser gerado. No entanto, isso gera um trabalho manual que vai con-tra o princpio da utilizao desta IDE, que a pro-dutividade. Dependendo da estrutura utilizada, pode ser complexo realizar, a cada build gerado, uma al-terao na classe para atender ao banco que voc deseja. Alm do mais, que na base de desenvolvi-mento voc ter de usar outro SGBD para desenvol-ver. Porm, na palestra do Delphi for PHP foi in-formado que existe a inteno de o produto oferecer

  • PHP Magazine - 3a Edio - 23

    o suporte a outros bancos de dados. Assim, acredita-se que uma questo de tempo para que outros SGBDs sejam suportados.

    Gerando Build Aps finalizar o desenvolvimento da aplicao,

    voc poder gerar um pacote para ser utilizado em um ambiente de produo. Este processo bem sim-ples e consiste em alguns passos next, next e finish, que usurios Windows e provavelmente futuros usu-rios desta IDE j esto familiarizados.

    Nos testes surgiram alguns problemas com o build gerado, devido a um bug relacionado exten-so filter que j foi corrigido.

    Perspectivas para o Delphi for PHP

    Acredita-se que esta ferramenta tenha um longo futuro. Tivemos contatos de algumas pessoas que j encomendaram a sua licena junto Codegear/Borland e esto bastante ansiosas.

    Acredita-se que ela ser amplamente utilizada em ambientes corporativos que ainda no adotaram o uso de software livre como regra ou naqueles am-bientes em que h muita preocupao com a produ-tividade. uma ferramenta que dever ser conside-rada no momento em que as pessoas que tomam de-cises forem optar sobre qual ser a sua plataforma de desenvolvimento.

    O Dreamweaver CS3

    O Dreamweaver foi uma das ferramentas que mais garantiu desta-que para a sua empresa mantenedo-ra, a Macromedia, recentemente foi adquirida pela Adobe. Diferencia-se em algumas caractersticas de outros ambientes de desenvolvimento mais tradicionais, como o Eclipse PDT , Zend, ou mesmo do recm lanado Delphi PHP.

    Com um foco inicial em layout e design, aos poucos foram introdu-zidos alguns recursos relacionados s linguagens de programao para web, como o prprio Coldfusion, linguagem proprietria da Macrome-dia, que estendeu-se at o ASP e PHP.

    Tal o seu grau de utilizao por muitos desenvolvedores, que optamos por conceder destaque para essa IDE, que h pouco tempo apresentou a sua mais recente verso: o Dreamweaver CS3.

    Perfil, instalao e configurao. O Dreamweaver iniciou sua trajetria como um

    timo editor de Layout para websites, pois apresen-tava recursos de uma forma melhor e mais comple-ta, do que ferramentas similares da poca como o FrontPage, Netscape Composer, dentre outros. Al-guns requintes, tais como menus prontos em Javas-cript, tambm faziam parte do pacote. Sua adoo dentre webdesigners cresceu muito, tornando esta ferramenta bastante popular.

    Aos poucos, seus recursos para algumas lingua-gens de programao, como ASP, PHP e ColdFusi-on, foram melhorando. Muitos recursos foram ad-vindos, tais como um forte editor de CSS, utilizan-do-se do j conhecido auto-completar e verificao de sintaxe. Inclusive, durante a codificao HTML, as verses mais recentes procuravam definir estilos CSS para as aes do usurio (definio de tipo e tamanho de fonte, pargrafo etc), tentando melhorar o cdigo final.

    O editor de HTML tambm possui algumas ca-ractersticas de realce de sintaxe, que permitem i-dentificar erros de tags no fechadas ou atributos duplicados, propriedades que no so compatveis com todos os browsers. Isso traz algumas facilida-des para o usurio, alertando-o de erros j nesta eta-pa do projeto.

    Agora na sua verso mais recente, o Dreamwe-aver CS3 incorporou o framework Spry. Seu objeti-vo oferecer mais wizards ao usurio.

    Figura 9 Viso geral do Dreamweaver CS3

    Na figura 9, pode-se observar uma viso geral

  • 24 - 3a Edio - PHP Magazine

    da interface da ferramenta, com a identificao das suas principais reas. A saber:

    1.botes de acesso rpido para alternar entre cdigo gerado, aspecto visual dos itens e um misto de ambos;

    2.abas para alternar entre os documentos em edio;

    3.barra de ferramentas; 4.rvore de diretrios do site; 5.propriedades do elemento selecionado. O download pode ser feito no site da Adobe. O

    link est citado nas referncias. Trata-se de um pro-duto pago, mas a empresa ermite que voc faa uma avaliao por trinta dias.

    A instalao bastante simples, sendo apenas necessrio seguir os passos descritos no instalador que o software j estar apto para uso.

    Definindo um projeto O Dreamweaver no possui diretamente o con-

    ceito de projeto. Para a IDE, o usurio est definin-do um site. Um site, nada mais do que a definio de algumas caractersticas bsicas como diretrio das pginas, host onde sero alocadas as pginas, usurio e senha para conexo. Abaixo apresentada apenas a rea de definio remota, pois contm al-gumas informaes mais relevantes aos nossos co-mentrios.

    Figura 10 Caractersticas remotas da definio de um site

    Como se pode observar, j esto disponveis

    alguns itens, como FTP Seguro e conexo por Fire-wall.

    Os itens a partir de Enable file check in and check out,so de uso opcionais por parte do desen-volvedor. Este deve habilit-los se desejar trabalhar em uma equipe com mais desenvolvedores em um mesmo site. Estas configuraes adicionais so para controle de edio concorrente de arquivos do site.

    Desenvolvimento em equipe Muitos podem desconhecer, mas o Dreamwea-

    ver possui algumas funcionalidades que auxiliam no desenvolvimento em equipe. Claro que pode parecer pouco se comparado a um recurso de versionamento de arquivos e times de desenvolvi-mento, mas, em alguns casos, pode contribuir pra o seu trabalho.

    Trabalhando com o conceito de check in e check out, possvel que um usurio detenha para si o controle de edio de um arquivo. Dessa forma, inconsistncias geradas pelo trabalho da equipe em um mesmo projeto so reduzidas.

    Voc encontrar mais informaes sobre sua utilizao na nota tcnica da Adobe citada nas refe-rncias deste artigo. Basicamente quando o usurio realiza um check out em um arquivo, est obtendo a verso mais recente para o diretrio local de traba-lho. O arquivo ficar bloqueado para uso deste usu-rio, at que o mesmo faa check in no arquivo. Os outros usurios visualizaro o arquivo com o cone de um pequeno cadeado na rvore de diretrios, in-dicando que o arquivo est bloqueado para edio. Na figura abaixo, podemos observar a viso de ar-quivos do servidor com o diretrio local. Os arqui-vos bloqueados para edio, sero listados referen-tes ao item 1, destacado na imagem.

    Figura 11 Viso dos arquivos remotos

  • PHP Magazine - 3a Edio - 25

    Sempre que se for iniciar um turno de trabalho, recomenda-se fazer a operao de sincronizao para obter a verso mais recente dos arquivos do servidor para o diretrio local. Antes de concluir esta operao, o Dreamweaver exibe uma listagem dos arquivos que sero sobrescritos. A operao pode ser feita em am-bos sentidos, tanto do diretrio local para o servidor ou, como seria o mais recomendado, do servidor para o diretrio local.

    No abordamos neste artigo a possibilidade da utilizao do Visual SourceSafe(VSS) integrado ao Dreamweaver. Para mais informaes sobre isto, reco-mendamos a leitura de algumas notas tcnicas no site da prpria Adobe.

    Novos recursos Na verso CS3, o Dreamweaver incorporou o

    Spry Framework, desenvolvido pela prpria Adobe para oferecer alguns recursos de Ajax para suas apli-caes. Por meio da interface da prpria ferramenta, o usurio poder definir componentes visuais que se utilizam desse framework, que dever ser exportado junto com a aplicao. O Spry se divide em trs grupos de funcionali-dades: Spry Data, Spry Widgets e Spry Effects.

    Com o Spry Data, possvel integrar facilmente o banco de dados ou os arquivos XML aplicao, j com opes de filtro e ordenao.

    Por meio do Spry Widgets, po-de-se facilmente adicionar elementos como listas, abas, validao de for-mulrios etc. Estes elementos podem mudar a apresentao da sua aplica-o.

    J com o Spry Effects, poss-vel adicionar elementos de efeitos visuais em suas pginas. Os elementos podero cres-cer (grow), encolher (shrink), realar (highlight), es-maecer (fade), dentre outros efeitos. Na figura 5, apre-senta-se a paleta de componentes Spry, na barra de ferramentas.

    Figura 12 - Paleta dos componentes Spry

    O diferencial da ferramenta oferecer ao usu-

    rio todos esses recursos apenas a um clique, arras-tando e definindo propriedades dos elementos, para alter-los de acordo com os seus propsitos.

    Figura 13 Data Components integrados com o Spry

    No poderamos deixar de citar a paleta de Da-

    ta Componentes. Com ela, possvel conectar com o banco de dados e criar listagens com paginao sem editar praticamente cdigo algum. Pode-se co-nectar diretamente a bancos de dados MySQL, defi-nindo uma conexo. Criada uma conexo, voc po-der utiliz-la para definir um RecordSet.

    Com os RecordSets, pode-se criar tabelas din-micas e adicionar paginao s mesmas. Tudo isto com o auxlio e a facilidade da interface visual da IDE. Na figura abaixo, a definio de um RecordSet e o conjunto de dados retornado pelo mesmo.

    Figura 14 RecordSet e o seu conjunto de dados retornado

    Algumas consideraes sobre a IDE

    O Dreamweaver pode ser uma tima opo pa-ra iniciantes. Sua facilidade de configurao e uso pode tornar menos frustrante o processo de aprendi-zagem. A incluso de um framework como o Spry tima para ajudar desenvolvedores iniciantes a con-textualizarem-se com a utilizao de bibliotecas. Os recursos advindos com o Spry reduzem o esforo de buscar bibliotecas para necessidades de abas, menus e algumas animaes em sua aplicao. Concluindo

    Procuramos expor alguns pontos importantes

  • 26 - 3a Edio - PHP Magazine

    destas conhecidas IDEs, para que o leitor possa to-mar conhecimento e optar pela que mais lhe convir, ou simplesmente se interesse em realizar uma avali-ao sobre cada uma delas.

    Apesar de apresentarmos as trs IDEs, no seria adequado compar-las, pois so projetos diferentes entre si. O PDT um timo produto da consagrada ferramenta Eclipse. O Delphi estabeleceu fortes ali-cerces no desenvolvimento desktop e agora est buscando participao no desenvolvimento Web. E o Dreamweaver que, de uma ferramenta de design e layout, est cada vez mais apresentando caractersti-cas voltadas programao tambm.

    De qualquer forma, a melhor IDE para voc, ser a que melhor adaptar-se sua forma de traba-lho e aos recursos que voc dispe para investimen-to.

    Caso nossos leitores demonstrem interesse em

    matrias que explorem detalhadamente as ferramen-tas apresentadas ou surjam interessados em continu-ar abordando o tema, nossa equipe conceder conti-nuidade ao tema.

    Referncias e links sugeridos: PDT http://www.zend.com/pdt#all_in_one Delphi for PHP http://www.codegear.com/products/delphi/php http://www.qadram.com/news.php#6 http://dd.cron.ru/dbg/ http://neshertech.net/adler/2007/04/09/bug-no-vcl-delphi-for-php-corrigido/ Dreamweaver http://www.adobe.com/products/dreamweaver/ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_15336

    Adler Brediks Medrado - [email protected] Analista e desenvolvedor, utiliza PHP na maioria dos seus projetos. Atualmente presta servios em um rgo federal em Braslia e instrutor de cursos PHP na X25 Treinamento e Con-sultoria. Alm disso, tambm proprietrio da empresa Nesher Technologies que presta servios de consultoria pa-ra empresas do Brasil e do exterior. Membro da equipe de coordenao do Grupo de usurios PHP do Distrito Federal (PHPDF). Flvio Zacharias Fagundes - [email protected] Flvio Fagundes formado em Cincia da Computao pela PUCRS em 2003 e atualmente trabalha como analista de sistemas em uma empresa de captura de transaes eletrnicas. Utiliza e fomenta a tecnologia PHP desde 2002 em vrios projetos. Presta consultoria em desenvolvimento de siste-mas e tambm um dos fundadores da revista PHP Magazine, participando ativamente de sua gesto. Ricardo Arago da Silva - [email protected] - www.raragao.eng.br Engenheiro de computao e entusiasta da linguagem PHP desde 2002. Presta consultoria em desenvolvimento de sistemas e leciona em cursos de graduao e ps-graduao em faculda-des de Braslia no Distrito Federal. Atualmente chefe da Clula de Desenvolvimento do Centro de Desenvolvimento de Sistemas (CDS) do Exrcito Brasileiro, onde desenvolve sistemas com as mais diversas tecnologias de mercado. tambm fundador e administrador da revista PHP Magazine.

  • PHP Magazine - 3a Edio - 27

    1. Introduo Devido ao alto custo da aquisio de ferramen-

    tas de aplicaes de gerenciamento e da necessidade de aquisies de outras ferramentas auxiliares tais como gerenciador de relatrios e Banco de Dados, aliados ao alto custo da mo de obra dos profissio-nais da Tecnologia da Informao, viu-se ento a necessidade de criar uma soluo, a qual atendesse todos esses requisitos.

    Com a constante evoluo das ferramentas para desenvolvimento de aplicaes via Web, que so programas de computador aos quais usurios aces-sam com um Web Browser na Internet, tambm so Websites dinmicos que oferecem no somente in-formaes estticas para os usurios, mas os deixa usar ferramentas dinmicas para trabalhar com uma aplicao, disponibilizando informaes gerenciais em qualquer lugar do mundo. Entende-se que com essa afirmao um administrador de empresas, com filiais espalhadas em localidades distantes geografi-camente, pode acompanhar toda movimentao da empresa distncia. Devido a esta evoluo, as in-formaes contidas nestas aplicaes tornam-se ca-da vez mais de difcil manuseio. Com isso, foi defi-nido que a soluo seria uma aplicao Servidor a qual rodaria em ambiente Web.

    A filosofia da tecnologia Web sob Demanda possibilita a criao de um Gerenciador de Aplica-es na qual o usurio pode desenvolver sistemas em grande escala e com uma melhor produtividade,

    a fim de otimizar o tempo de desenvolvimento dos mesmos. A necessidade do desenvolvimento de a-plicaes via Web agregadas a esta filosofia permi-tiu a idealizao do Gerenciador Guar.

    A linguagem escolhida para o desenvolvimento do Guar foi o PHP, que no compilado, mas sim interpretado por um servidor Web no provedor que hospeda o CGI. Por esse motivo o torna mais rpido do que os CGIs escritos em outras linguagens como C e Perl. Um segundo motivo que levou o desenvol-vimento em PHP, foi a vasta bibliografia encontrada e a grande gama de profissionais com conhecimento e utilizao desta linguagem.

    Como terceiro motivo, pode-se considerar tam-bm a portabilidade a conexes do PHP, pois com esse diferencial, o Banco de Dados utilizado de escolha do cliente, podendo ser um Banco de Dados Livre ou Proprietrio.

    2. O Gerenciador Guar

    O Gerenciador Guar o conjunto da necessida-de da evoluo para desenvolvimento de aplicaes via Web agregado filosofia da tecnologia Web sob De-manda juntamente com a linguagem PHP e a alternativa de escolha do Banco de Dados por parte do cliente.

    A proposta acima permite que o cliente, ao adquirir o Gerenciador Guar, no mais fique preso as ferramen-tas pagas, ou seja, o Guar pode rodar em um Siste-ma Operacional, Servidor Web e Banco de Dados Livres.

    SOFTWARE LIVRE

    GuarGuarGuar Uma soluo em software livre para reduo de custos no desenvolvimento de aplicaes Web

    por Pascoal Vernieri

    Este artigo tem por objetivo demonstrar o Gerenciador Guar como uma alternativa desenvolvida em software livre para reduo de custos no desenvolvimento de aplica-es Web, bem como, comparar as vantagens de sua tecnologia sob as formas tradi-cionais de desenvolvimento de aplicaes Web.

  • 28 - 3a Edio - PHP Magazine

    2.1. Funcionamento So as facilidades oferecidas pelo Gerenciador Guar,

    que proporcionam maior velocidade e flexibilidade no seu manuseio, visto que, o Guar monta suas pginas finais escrevendo os cdigos HTML e JavaScript de forma total-mente automtica.

    Diferente da forma tradicional de programao, o Guar no segue os passos utilizados pelo mtodo tradicio-nal. Na criao de uma URL (Tela de Aplicao para Ges-to de Dados) seu cdigo gerado automaticamente, bem como a implementao da tabela no Banco de Dados. As URLs criadas pelo gerenciador no existem fisicamente em um arquivo para serem publicadas, so encontradas somen-te suas definies armazenadas no Banco de Dados para que, quando forem solicitadas, elas sejam disponibilizadas em formato HTML e JavaScript.

    Esta agilidade se d por meio da utilizao de um Di-cionrio de Dados on-line, advindo da montagem das telas atravs da leitura dinmica de critrios e parmetros tcni-cos cadastrados no Banco de Dados, juntamente com o conceito de Auto Gerenciamento e das caractersticas de Orientao a Objetos e Orientao a Eventos em todos os componentes disponibilizados para a aplicao.

    Um outro aspecto que torna funcional o gerenciador a aplicao de uma estrutura matricial de definio de siste-mas em URLs e OBJETOS (unidades de apresentao dos dados), facilitando um desenvolvimento personalizado, rpido e adequado s necessidades particulares de cada aplicao.

    2.2. Aspectos tcnicos diferenciados

    Utilizao de tecnologia Web sob Demanda e uma arquitetura natural Intranet / Extranet;

    Acesso aos dados atravs de viso relacional em tabe-las SQL, viso multidimensional dos dados e Orientao a Objetos;

    Uso de algoritmo de armazenamento de dados despro-vido de quaisquer declaraes e totalmente dinmico, ou seja, "desprovido de declaraes". Significa, portanto, que no preciso declarar o nmero de dimenses ou intervalos de valores e no existem limites em qualquer um dos dois;

    A utilizao de dicionrio de dados on-line; Implementaes sem necessidade de manutenes

    que causem paralisaes ou reprogramaes de cdigos, e nem nas pginas Web envolvidas;

    Registro automtico dos dados do operador credencia-do, identificando seu nome, o tipo de atualizao e a data e hora da operao em cada registro da base de dados;

    Utilizao de histricos (consulta aos dados em qual-quer momento da vida do registro) e histricos excludos (consulta aos dados excludos e recuperao automtica de registros excludos);

    Telas totalmente dinmicas, utilizando-se integralmen-te das caractersticas de Orientao a Objetos e Orientao

    a Eventos em todos os componentes disponibilizados pela aplicao;

    Parmetros de desenvolvimento totalmente escalveis e padronizados;

    Utilizao extensiva do conceito de Auto Gerencia-mento, ou seja, o gerenciador pode ser customizado confor-me as necessidades apresentadas;

    Possui um gerador de relatrios integrado; Multiplataforma, ou seja, possibilidade de operao

    em at 90 plataformas de hardware e software diferentes; Comunicao com diversos Bancos de Dados, livres

    ou proprietrios; Possibilidade de implementao automtica de

    EAI (Enterprise Application Integration) e de "IDC (Internet Data Center).

    3. Criando uma aplicao no Gerenciador Guar e o impacto do desenvolvimento

    Para compreender melhor as funcionalidades do Ge-renciador Guar, ser utilizado o mtodo ilustrativo. Logo, os detalhes de manuseio da ferramenta no sero relevan-tes, mas sim os seus aspectos como: a criao de telas, no-meadas de URLs, e componentes, chamados de OBJE-TOS. Diante disto, ao decorrer desta seo, sero mostra-dos os procedimentos necessrios para criar uma aplicao simples, como por exemplo, uma Agenda de Contatos.

    3.1. Criando uma Agenda de Contatos Esta Agenda de Contatos conter os seguintes cam-

    pos: cdigo, nome, data de nascimento, endereo, cida-de, estado, pas, telefone (residencial, comercial, celular, fax e outros) e e-mail. O campo estado ser relacionado com a tabela d99 j existente, mostrando na tela o seu se-gundo campo. O campo pas, tambm ser relacionado, com a tabela d98 e mostrar o segundo campo da mesma.

    Figura 1 URL d101 Cadastro de URL

    Para criar este exemplo, necessrio acessar de dentro do Guar a URL (d101) Cadastro de URL,

  • PHP Magazine - 3a Edio - 29

    onde define-se a criao da URL. Neste caso sero informados somente os parmetros necessrios para sua criao, que so: Tipo da URL = Dados, N da URL = 100, Nome da URL = Agenda de Contatos, Base de Dados = xproj, Tabela Direta = d100 e N Objeto Flag = 2, como ilustra a Figura 1.

    Logo, aps feita a gravao deste registro na URL (d101), o Guar automaticamente cria a tabela d100 no Banco de Dados selecionado, o qual foi definido como xproj, com a seguinte estrutura: CHAVE, REGISTRO e NUMERO. Com essa estru-tura (veja Figura 2) que se consegue uma melhor dinmica na componentizao do Guar.

    Figura 2 Estrutura da tabela d100 no Banco de Dados

    Com a definio da URL concluda, ser feita a componentizao desta URL, para isso, necessrio acessar a URL (d102) Cadastro de Objetos (veja Figura 3), em que sero informados os parmetros de acordo com a Tabela 1:

    Figura 3 URL d102 Cadastro de Objetos

    Com isso, a URL de Agenda de Contatos est pronta, como mostra a Figura 4, e apta populao de dados. Note que poucos procedi-mentos foram necessrios para implementar este exemplo, tendo inclusive sido feito rela-cionamentos a outras tabelas existentes (d98 e d99) como no caso dos componentes estado e pas.

    Figura 4 URL d100 Agenda de Contatos

    A Figura 5 permite observar como os dados fi-

    cam armazenados na tabela d100 no Banco de Da-dos, aps a gravao de alguns registros na URL da Agenda de Contatos.

    Cada registro armazenado fica delimitado por um caractere ^, em que cada posio corresponde ao componente definido na URL d102, dessa forma tem-se a flexibilidade de criar mais componentes, excluir componentes existentes e dar manuteno sem provocar uma interrupo no Banco de Dados, pois no h necessidade de alterar a estrutura da ta-bela e sim os dados do campo REGISTRO.

    Este item permitiu verificar a diferena existen-te na forma de criao de uma URL pelo Gerencia-dor Guar, comparada forma tradicional. Visto pelo lado tradicional, os procedimentos a serem se-guidos seriam: definir a estrutura da aplicao, en-caminhar a estrutura para o DBA implementar, criar a tela para a interface, criar os arquivos para a comu-

    Tabela 1 Definio dos componentes a serem criados

  • 30 - 3a Edio - PHP Magazine

    nicao com o Banco de Dados e, finalmente, public-los em um diretrio Web. Note que a forma tradicional de de-senvolvimento envolve vrios profissionais, diferentemente do Gerenciador Guar, em que apenas um profissional che-ga ao mesmo resultado em pouco tempo, sem se preocupar

    com a hierarquia exigida pelo modo tradicional.

    3.2. O impacto da utilizao do Guar nos cus-tos de desenvolvimento

    No mercado atual, impossvel sobreviver sem um mnimo de investimento em tecnologia. Das pequenas em-presas at as multinacionais, a informtica est presente de maneira essencial para a sobrevivncia dessas organiza-es. Logo, todas as organizaes de certo modo precisam investir algo em tecnologia. Mas por que no investirem menos sem perderem a qualidade?

    A utilizao de software livre pelo Gerenciador Guar proporciona benefcios como: vantagens estratgicas (trazendo maior praticidade, independentemente de posi-es filosficas ou princpios morais), segurana, portabili-dade, facilidade de uso, ou suporte corporativo, autonomia tecnolgica, compartilhamento do conhecimento alm, principalmente, das redues de custos, que comeam des-de os licenciamentos at os requisitos de hardware, gerando assim impactos de escala macroeconmica.

    O impacto nas redues de custos gerados pelo Guar interfere diretamente nas aquisies de licenas de Banco de Dados, visto que no h necessidade de adquirir: (1) um Banco de Dados proprietrio; (2) um Gerenciador de Rela-trios, que j integrado ao Guar; (3) um Sistemas Opera-cionais, dada independncia da sua plataforma; (4) Requi-sitos de Hardware, pois as mquinas clientes no necessi-tam de hardware avanado; (5) Tempo de Desenvolvimen-to, pois o gerenciador por meio da sua estrutura e facilidade de criao reduz em muito o tempo de desenvolvimento,

    permitindo assim uma reduo dos profissionais envolvi-dos. Contudo, pode-se dizer que a utilizao do Guar exer-ce forte influncia no resultado final do desenvolvimento de Aplicaes Web.

    Consideraes finais Este artigo mostrou que o avano tecnolgico exige

    que o mercado se adapte as necessidades agregadas a uma reduo de tempo e otimizao do trabalho empregado pe-lo profissional, juntamente com a reduo de custos.

    Esta tendncia, aliada tecnologia Web sob demanda mais a linguagem PHP e alternativa de escolha do Banco de Dados por parte do cliente, permitiram a idealizao do Gerenciador Guar. No decorrer do trabalho foi possvel perceber que sua estrutura e facilidade atendem a estas ne-cessidades permitindo uma reduo de tempo e profissio-nais com respectivo impacto positivo sobre o custo do de-senvolvimento das Aplicaes Web, quando comparado forma tradicional de desenvolvimento.

    Referncias e links sugeridos

    Soares, Wallace. Programao em PHP, Con-ceitos e Aplicaes. Editado por rica, Brasil: 2000.

    Freire, Bruno. Software livre no setor privado: Q u e r p a g a r q u a n t o ? , em h t t p : / /www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1553. Brasil: maro de 2004.

    Ferraz, Nelson . Vantagens Estratgicas do Software Livre para o Ambiente Corporativo, em http://www.universia.com.br/pesquisa_bibliotecas/materia.jsp?id=3880. Brasil: maro de 2004.

    Amadeu, Srgio. Entrevista ComCincia, em https://gestao.idbrasil.gov.