PHP Magazine 003

Embed Size (px)

Citation preview

  • 8/8/2019 PHP Magazine 003

    1/39PHP Magazine - 3 a Edio -

  • 8/8/2019 PHP Magazine 003

    2/392 - 3a Edio - PHP Magazine

    Caro leitor,

    Prosseguindo no rduo trabalho de lhe proporcionar uma boa leitura, estamos lanando a terceira edio dnica revista sobre linguagem PHP em portugus.

    A partir deste momento a revista passar para uma nova fase em que os novos voluntrios comeam a trabalhar 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 nDistrito Federal. Percebemos que a maioria dos participantes j conhecia a revista, o que nos deixa muito satisfetos com nosso trabalho. E, melhor ainda, ao final da palestra vrias pessoas se ofereceram para integrar nossaequipe 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 qualificadosAgradecemos, principalmente, a todos que j escreveram em outras edies. Aos novos autores, damos as nossa boas-vindas e j aguardamos os prximos trabalhos.

    Estamos tambm comemorando o marco de 5.000 assinantes que nos prestigiam e nos motivam a seguircom este trabalho. Agradecemos, portanto, aos moderadores de listas famosas de tecnologia que, de maneira bastante 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 pequeno demonstrativo das IDEs mais novas para PHP, assunto que tem sido muito discutido nas listas de PHP Brasi

    a fora. H tambm um artigo sobre segurana, que apresenta alguns passos para programar de maneira segura, outro artigo sobre codificao limpa, com dicas para os iniciantes deixarem seus cdigos mais limpos e agradveis. Voc ler tambm outros artigos interessantes sobre PHP-GTK, Guar, Arrays e gerenciamento de contedo de aprendizagem. Alm disso, preparamos um resumo sobre o 8 Frum Internacional de Software Livr(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 drevista 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 AragoFlvio Z. FagundesThiago Incio

    Reviso tcnica Ricardo Arago da SilvaFlvio Zacharias Fagundes

    Reviso portugus Camilla Carvalho

    Correspondentes e colaboradores Adler Brediks Medrado

    Cleber SousaEr Galvo AbbottJosiane Lima de OliveiraLeandro SchwarzPablo Dall'OglioPascoal Vernieri

    SUMRIO3, 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 gerenciamentode contedo de aprendizagem

    19, Um pequeno tour pelas IDEs: PDT, Delphi e Dream-weaver CS3

    27, Guar: Uma soluo em software livre para reduode custos no desenvolvimento de aplicaes Web

    31, Segurana no PHP: Os 6 requisitos mnimos

    36, 8 Frum Internacional de Software Livre38, 1. PHP Road Show

  • 8/8/2019 PHP Magazine 003

    3/39PHP 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 PHGTK 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 formaque uma aplicao web, com a diferena de que oacesso 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 utilizandoconjuntamente com um banco de dados, mas, paraisso, o banco de dados teria de ser de fcil instala-

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

    1. SQLiteO SQLite um banco de dados relacional cuja

    estrutura (tabelas, ndices, dados) est contida emum 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 dedados relacionais cuja estrutura cliente-servidor exi-ge a instalao do servidor de banco de dados, queir 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. Imagineum arquivo chamado "meusistema.db" contendotodas as tabelas do seu sistema! Voc s ter decompactar este arquivo junto com sua aplicao pa-

    ra distribuir seu programa! Lembra do forma-to .DBF, comum entre as aplicaes clipper, ou osarquivos .MDB do MS Access ? Pois , o SQLitetem 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 vistaque implementa o padro SQL92, permite transa-es, triggers e permite bancos de dados de at 2tebibytes de tamanho (2 na 41), ou seja, muito by-te. O banco de dados pode servir vrias requisiesde leitura (SELECT) ao mesmo tempo, entretanto,

    um lock do arquivo realizado em operaes deescrita (INSERT, UPDATE, DELETE).A biblioteca de acesso ao SQLite parte inte-

    grante do PHP5. Isto quer dizer, que as funes decriao e acesso ao banco de dados so nativas dalinguagem, o que torna seu uso extremamente sim- ples.

    Figura 1 Estrutura do SQLite

  • 8/8/2019 PHP Magazine 003

    4/394 - 3a Edio - PHP Magazine

    2. Classe AgendaPara comear nosso programa, criaremos uma

    classe chamada Agenda. Iremos cri-la utilizando omecanismo de herana. Agenda ser classe filha deGtkWindow, 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, emonth-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 umcompromisso da listagem de compromissos. Estalistagem ser criada pelo mtodo createTaskList(),que ir criar toda estrutura do GtkTreeView paravisualizar as tarefas.

  • 8/8/2019 PHP Magazine 003

    5/39PHP 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 ousurio clica em alguma data do calendrio. Seuobjetivo preparar os campos para digitao de umnovo compromisso. Ele limpa todos os campos dedigitao, preenchendo o campo data justamentecom 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 nocalendrio, alterando seu ms. Seu objetivo recar-regar todos os compromissos do ms corrente. Destaforma, este mtodo ser executado tambm em ou-tras ocasies, quando, por exemplo, for inserido umnovo 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, adicionandono 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 desalvar 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 tarefaslogo 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-

  • 8/8/2019 PHP Magazine 003

    6/396 - 3a Edio - PHP Magazine

    todo onDelete(). Seu objetivo obter o item selecio-nado na listagem de compromissos e perguntar aousurio 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, recarregandoa 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 seleoif ( $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 SQLitesimplesmente destruindo o objeto de conexo./*

    * mtodo __destruct* Executado quando janela for destruda*/

    function __destruct (){

    // fecha conexo PDOunset( $this -> conn );

    }

    }

    Agora que terminamos de escrever nossa clas-se, veja a seguir como ficou nosso programa. Nele, precisamos somente instanciar um objeto da classeAgenda. 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 commenos 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 motivosdidticos. Voc pode fazer download da aplicaocompleta no site da Agenda, emhttp://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] Dall'Oglio formado em Anlise de Sistemas pela UNISINOS. Autor do livro sobre PHP-GTK pela novatetora, programa em PHP-GTK desde sua criao em 2001. membro do time de documentao e criador da comundade brasileira de PHP-GTK (www.php-gtk.com.br). Atualmente, diretor de tecnologia e proprietrio da AdiaSolutions (www.adianti.com.br), onde atua como consultor de tecnologia e engenheiro de software. Pode ser contatado pelo e-mail [email protected]. Pablo Dall'Oglio formado em Anlise de Sistemas pela UNISINOS. Autor do sobre PHP-GTK pela novatec editora, programa em PHP-GTK desde sua criao em 2001. membro do time de dcumentao e criador da comunidade brasileira de PHP-GTK (www.php-gtk.com.br). Atualmente, diretor de tecnlogia e proprietrio da Adianti Solutions (www.adianti.com.br), onde atua como consultor de tecnologia e engenhro de software. Pode ser contatado pelo e-mail [email protected].

  • 8/8/2019 PHP Magazine 003

    7/39PHP 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 formamais adequada pelo sistema. Nas sees seguintessero demonstradas algumas das funes da distri- buio nativa do PHP especficas para estas tarefas.

    1. Mesclagem, diviso e fatiamento devetores

    possvel juntar vetores separados em um ni-co vetor ou ainda dividir um vetor em vrios vetoresdiferentes. No script a seguir, foi utilizada a funoarray_merge() para mesclar os dois vetores$vetor01 e $vetor02 em um nico vetor $frutas .Esta funo pode ser utilizada para mesclar vriosvetores 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 atravsda funo array_chunk() . O terceiro argumentodesta funo opcional. Se este argumento for omi-

    tido oufalse , sero criados novos ndices numricosno vetor de sada, ou seja, apenas os valores dos ele-mentos sero passados. Caso sejatrue , os mesmosndices do vetor de dados sero mantidos, sendo passados para o vetor de sada o valor e o ndice doselementos. Por fim, uma fatia do vetor $frutas foicopiada para o vetor $slice atravs da funoar-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 quesero copiados para o vetor de sada. Se o nmerode elementos a serem copiados for positivo, entoser copiado este nmero de elementos na direodo ndice para o final do vetor de dados. Se for ne-gativo, ser copiado este nmero de elementos nadireo do ndice para o incio do vetor de dados.Por fim, se este argumento for omitido, o vetor desada conter os elementos do ndice at o final dovetor de dados.

    As sadas nas telas, mostradas neste artigoforam obtidas atravs das funesshow_vars() e print_a() da bibliotecadebuglib , constituin-do importante recurso, tanto para programado-res recm-iniciados, quanto para aqueles commuitos 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 emhttp://www.atomar.de/.

    LINGUAGEM

    Tratamento de Vetores e

    Matrizes em PHPMatrizes em PHPMatrizes em PHP Parte IIParte IIParte II

    por Leandro Schwarz

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

  • 8/8/2019 PHP Magazine 003

    8/398 - 3a Edio - PHP Magazine

    Figura 1 Sada da tela para oscript 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 primeiroelemento deste vetor o ltimo elemento de um novovetor, o segundo elemento, o penltimo e assim por diante. No script seguinte, foi utilizada a funoar-ray_reverse() para inverter o vetor $frutas em umoutro vetor nomeado$reverse . Alm do vetor a ser invertido, possvel inverter tambm os ndices dovetor de dados, passando-se um segundo argumentoopcional com valor true .

    A reverso de um vetor a troca dos valoresdos elementos pelos seus ndices e vice-versa. Afunoarray_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 funoshuffle() . Observe que estafuno 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 funosrand() associada funomicroti-me() , que retorna a parte com o nmero de micros-segundos da hora atual.

    Figura 2 Sada da tela para oscript anterior

    3. Ordenar os elementos do vetorExistem vrias funes especficas para ordenao

    de vetores. Nas sees seguintes sero demonstradas

    algumas delas. A funosort() ordena os elementos deum vetor em ordem crescente. Alm do vetor a ser orde-nado, um argumento opcional pode ser passado de formaa identificar como os elementos devem ser comparadosentre si. Se for passada a constanteSORT_NUMERIC, os elementos sero comparados numericamente. Se for passadoSORT_STRING , ser considerada a ordemalfabtica. Por fim, se o argumento no for passado, serconsiderado o valor padroSORT_REGULAR , quefaz 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 funosort() .As funesasort() e arsort() trabalham de formaanloga s funessort() e rsort() , respectivamente. Anica diferena entre estes pares de funo que o par

  • 8/8/2019 PHP Magazine 003

    9/39PHP Magazine - 3a Edio - 9

    asort() e arsort() mantm os ndices originais do vetor de dados, enquanto que as funessort() e rsort() criamnovos 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 funesso funes do tipobool ou do tipovoid , retornandotrue , 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 oscrip anterior

    3. Ordenar os ndices do vetorAs 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 funesksort() e krsort() . Estasfunes so anlogas s funessort() 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 aseguir.

    Segue abaixo, a sada da tela obtida com o script anterior.

    Figura 4 Sada da tela para oscript anterior

    4. Ordenar nomes de arquivosSe um vetor que guarda nomes de arquivos for

    ordenado pelas funes anteriores, erros podem o-correr, pois a comparao alfabtica de valores comletras e nmeros nem sempre facilmente identifi-cada pelo computador. Por exemplo, se os valoresimagem1 , imagem2 e imagem10 forem ordenadosalfabeticamente, a ordenao resultariaimagem1 ,imagem10 e imagem2 , nesta ordem. Considere o

  • 8/8/2019 PHP Magazine 003

    10/3910 - 3a Edio - PHP Magazine

    script a seguir.

    Para solucionar este problema, foram uti-lizadas funes de ordenao baseadas numalgoritmo deordem natural . Este algoritmovisa simular a forma de ordenao do crebrohumano, quando h caracteres alfabticos enumricos misturados. A funonatsort() realiza a ordenao alfabtica em ordemcrescente baseada em um destes algoritmosde ordem naturais. A funonatcasesort() funciona de forma similar funonatsort() ,

    porm, ela no faz distino entre caracteresmaisculos e minsculos. A projeo na telado script anterior segue na figura 5.

    Observe que para a funonatcase() con-sidera-se que caracteres maisculos prece-dem caracteres os minsculos. Isto se deveao fato de os caracteres maisculos realmen-te precederem os caracteres minsculos natabela ASCII. J a funo natcasesortreal-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 oscript anterior

    Consideraes finaisEste artigo apontou vrias funes que po-

    dem ser utilizadas no tratamento de vetores.Espera-se que este documento tenha elucidadoo funcionamento das funes mais utilizadas para manipulao de vetores e matrizes. No en-tanto, a seo do manual do PHP que trata devetores muito vasta, o que torna invivel ameno a todas elas. Se ainda assim, o leitor no encontrar no manual do PHP uma funoque realize a tarefa desejada, sugere-se que umalgoritmo 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 desenvomento WEB, possui slidos conhecimentos em PHP e MySQL.

    Atualmente mestrando em Engenharia Eltrica no Instituto de Engenharia Biomdica da UFSC e projeta website

    lojas virtuais como autnomo. Engenheiro eletricista pela Universidade Federal de Santa Catarina (UFSC). Atuadesde 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 websitelojas virtuais como autnomo.

  • 8/8/2019 PHP Magazine 003

    11/39PHP Magazine - 3a Edio - 11

    IntroduoUma das maiores crticas ao PHP que a lin-

    guagem facilita os desenvolvedores a programaremcdigos sujos e de difcil manuteno.

    Normalmente, quem faz estas crticas conheceuPHP a alguns anos atrs, numa poca em que os de-senvolvedores no se preocupavam com a qualidadedo 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 umnico arquivo.

    Realmente este tipo de cdigo existiu e em al-guns locais ainda existem, porm, algumas tcnicassimples nos permitem criar um cdigo limpo e defcil 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 cdigofacilmente a ponto de adicionar funcionalidades ne-le?

    Se a resposta for sim para todas as perguntasacima, 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 esteartigo, pois alguma coisa poder lhe servir.

    Quem vai trabalhar com esse cdigo? Neste artigo vamos pressupor que o cdigo sermanipulado 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 problemaO 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 deler, 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 mesmacoisa que uma funo interna do PHP. Isto alm detornar o cdigo mais difcil de manter, ainda faz

    com que ele perca em performance, porque ele vaiexecutar um procedimento em um nvel mais altosendo que j existe esta funcionalidade pronta paraser executada em um nvel mais baixo.

    CODIFICAO

    Escrevendo cdigo PHPEscrevendo cdigo PHPEscrevendo cdigo PHPde fcil manuteno

    por Adler Bedriks Medrado

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

  • 8/8/2019 PHP Magazine 003

    12/3912 - 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 nocore do PHP e no precisam passar pelo processo decompilao do PHP antes de serem executadas.

    Uso indiscriminado de constantesEm muitos cdigos so usadas constantes indis-

    criminadamente, isso favorece a difcil manutenodo cdigo, porque uma pessoa que nunca o viu terque 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 sistemaantes de usa-lo.;

    Estas constantes que eu coloquei ainda so bemintuitivas, eu j encontrei algo assim:

    QBR_LN_HTML difcil ou no?Muitos desenvolvedores utilizam este mecanis-

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

    Concatenando variveisAo concatenar variveis, procure sempre, fazer

    da seguinte forma:$variavel = Este artigo fala sobre cdigode 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 enginePara 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: Nemsempre o webdesigner programa em PHP.

    Padres de codificaoTenha 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 cdigoso padro de codificao de frameworks, que j estoconsolidados 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 suasnecessidades.

    muito mais fcil ter um cdigo onde todas asvariveis tenham o padro 'camelCaps', onde vari-veis iniciam com a primeira letra em minscula e asdemais palavras com maisculas, exemplo:

    $colecaoUsuarios, $objConexao

    ao invs de usar assim:

    $COLECAOUSUARIOS, $Colecaousuarios.

    Viu a diferena?

    ComentriosInicie todo o seu cdigo com um bloco de co-

    mentrio com informaes sobre aquele respectivoarquivo, 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 conexoao banco de dados MySQL* utilizando PDO e etc, etc, etc,** author: Adler Medrado* date: [email protected]** TODO: Implementar mtodo de controle detransaes* FIXME: mtodo lastInsertID no retorna a in-formao correta*/

    No use comentrios de uma linha que sejambvio, por exemplo:

    // Este mtodo grava usurio no banco

    public function gravaUsuarioNoBanco(){// Aqui ele executa o mtodo inserir

    $this->inserir();}

  • 8/8/2019 PHP Magazine 003

    13/39PHP Magazine - 3a Edio - 13

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

    Controle de versoPara uma aplicao que modificada constante-

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

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

    Abstrao de banco de dadosEscrever suas classes de abstrao uma boa,

    pois permitir que qualquer mudana em relao a banco de dados na sua aplicao, seja feita apenasnestas classes e no na aplicao como um todo.

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

    Utilizando frameworksVoc pode utilizar um framework porque eles

    j implementam os padres descritos anteriormentee 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), acorreo de bugs freqente.

    Existem timos frameworks em PHP - eu diriaat 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 nahora de entender o cdigo por parte do novo desen-volvedor ser poupada.

    ConclusoEste artigo visou demonstrar bem simples e di-

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

    Qualquer dvida, por favor entrem em contatocomigo 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 Cosultoria. Alm disso, tambm proprietrio da empresa Nesher Technologies que presta servios de consultoria para empresas do Brasil e do exterior.Membro da equipe de coordenao do Grupo de usurios PHP do Distrito Federal (PHPDF).

  • 8/8/2019 PHP Magazine 003

    14/3914 - 3a Edio - PHP Magazine

    At pouco tempo estudar era visto meramentecomo um simples ato de ir a uma instituio de ensi-no, assistir as aulas e tentar entender os assuntoslecionados. Hoje, em muitos lugares, essa visocontinua 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 odono da verdade, mas que tenta traar um caminho para que seus alunos possam descobrir suas prpriasverdades por meio de bases slidas de experinciase vivncia auxiliadas por ele, e a partir da construir seu prprio conhecimento.

    O importante fazer com que o aluno evoluaem seu prprio ritmo sem, no entanto, desprend-lode um determinado grupo. Para que isso aconteaso 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 oucoletivas [1]. Teorias como o construtivismo, beha-viorismo e o cognitivismo tentam descrever como o processo de aprendizagem acontece.

    Hoje, existem vrios ambientes instrucionaisque 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, dentreelas 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 emalguns casos gerenci-los, sendo que geralmenteutilizam uma ou vrias dessas teorias pedaggicasem suas estruturas.

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

    O que so LCMSAntes 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 sedestina agregao de vrios contedos de forma agerenci-los. Osblogs so exemplos de CMS, ouseja, voc envia um texto e o software mantm aorganizao atravs da criao de categorias (dias,ms, ano, outros), mantendo para isso mecanismosde 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 deblogs , possui vrias funcionalidades co-mo, por exemplo, a de administrao de artigos, m-dias, sites, relatrios, lojas e cursos. O seu principalfoco possibilitar a agilizao do processo de publi-

    GERENCIADOR DE CON

    Ambientes de livre distribuiopara gerenciamento decontedo de aprendizagem

    por Josiane Lima de Oliveira

    Neste artigo ser feita uma c breve introduo aos Ambientes Virtuais de Gerencmento de Contedo de Aprendizagem, dando destaque para os de distribuio livrbem como suas caractersticas bsicas, uma pequena anlise e as expectativas para

    futuro desses ambientes em relao educao a distncia.

  • 8/8/2019 PHP Magazine 003

    15/39PHP 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 soo Joomla, Drupal, Mambo, Wordpress e PHPNuke. No site cmsmatrix.org podem ser feitas algumascomparaes entre esses sistemas.

    O LMS ( Learning Management System ) ouSistema de Gesto de Aprendizagem um CMS, porm, seu contedo voltado para aprendiza-gem. Ele responsvel pelo gerenciamento decursos, que por sua vez so criados por outrasferramentas, 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, osusurios sempre tm o mesmo curso disponvel.

    Os RLO ( Reusable Learning Objects ) ouObjetos 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 utilizaessa tecnologia o SCORM (Sharable Course-ware Object Reference Model ) ou Modelo deReferncia 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 diferentesambientes. Esses pequenos mdulos possuem amenor 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 poucosseus materiais e ferramentas de comunicao, bem como melhor-los atravs do acmulo deconhecimento adquirido com a sua utilizao.

    Por fim, o Sistema Gestor de Contedo deAprendizagem (LCMS), o ambiente que agregatodos os conceitos vistos at aqui: CMS + LMS+ RLO. Um LCMS tem como objetivo centralgerenciar, 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 soaquelas que tentam simular de forma on-line umambiente 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 realcomo, 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 doconhecimento prvio dos objetivos a serem alcana-dos.

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

    Disponibilidade, possibilidade de acesso emqualquer 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 tipoquiz ,

    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 diferentestipos de computadores;

    Distribuio livre, inclusive com o cdigofonte, 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 aessa tecnologia. Isso proporciona o aumento de co-munidades de desenvolvimento e distribuio dematerial referente s mesmas, o que s vem a contri-

  • 8/8/2019 PHP Magazine 003

    16/3916 - 3a Edio - PHP Magazine

    buir com a sua melhoria e divulgao.

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

    sos presenciais quanto a distncia. O seu principalobjetivo servir de apoio ao aprendizado e, portantointegrasse 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 oque est sendo feito em cada curso, podendoexcluir, editar e adicionar ferramentas aosmesmos e gerenciar contas de usurios;

    Tutor esse elemento geralmente represen-tado pelo professor, que atravs do domniodo ambiente gerencia os contedos de suasaulas, 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 outrasque 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 estiloquiz , com o resultadoon-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 comoo SCORM, o que garante que o curso seja reutiliza-do e reformulado vrias vezes.

    Anlise de Sistemas de Gerenciamento de AprendizagemO objetivo dessa anlise ser selecionar LCMSsque tenham recursos como: ferramentas de comuni-cao, produtividade e administrativas, alm de su- porte a lngua portuguesa e licena GNU. No serfeita 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, consultaoff-

    line do material, calendrio e busca, por exemplo. Jas administrativas englobam os aspectos de gerenci-amento de cursos, material, alunos e das prpriasferramentas 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 usodas ferramentas tanto por administradores, que notero que ficar traduzindo, quanto para professores ealunos 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, foiutilizado para um primeiro nivelamento um site es- pecializado em fazer comparaes entre diferentesSistemas de Gesto de Contedo de Aprendizagem:o Edutools [6]. Outro site tambm muito interessan-te para fazer esse tipo de anlise o Open SourceCMS [7].

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

    Na primeira seleo muitas ferramentas possu-

    am licena GNU, mas algumas no tinham recursosessenciais comoChat ou possuam pginas poucointuitivas e na sua grande maioria, no tinham co-munidades em portugus difundidas.

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

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

    MoodleO Moodle (acrnimo deModular Object-

    Oriented Dynamic Learning Environment ) sem

  • 8/8/2019 PHP Magazine 003

    17/39PHP 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 diversascomunidades e, alm de tudo, tem um forte apelo pedaggico baseado no construtivismo social.

    Site do Moodle

    Assim como a grande maioria dos LCMS, oMoodle 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 maisantiga. [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 eat a modificao do cdigo PHP, se necessrio. Otutor tem pleno poder de modificar o curso, inserin-do ou excluindo mdulos, bem como escolhendoseu 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 comoutras para comunicao, como oschats , 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 Laboratriode Avaliao.

    ATutorO ATutor, assim como o Moodle, uma

    ferramenta voltada para a gesto de cursos deaprendizagem, porm, seu principal foco estna acessibilidade e facilidade de uso de seusrecursos. Ele possui licena GNU e um ambi-ente totalmente desenvolvido em PHP, estandode acordo com o padro SCORM e com as es- pecificaes de acessibilidade W3C WCAG1.0.

    Site do ATutor

    A acessibilidade possibilita que pessoas comdeterminadas deficincias ou que possuam equipa-mentos mais antigos e conexo lenta possam ter a-cesso ao contedo do site, assegurando desta formauma 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 econtroles desnecessrios), textos alternativos paraimagens, rtulos em formulrios, foco para camposde 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 doscursos seja exportado ou importado de/para outrasferramentas com o mesmo padro. Outra caracters-tica interessante a possibilidade de exportar o con-tedo do ATutor em pacotes de contedo, podendoacess-losoff-line .

    Expectativas para o futuro desses SistemasAtualmente, combinaes entre diferentes tec-

    nologias tm sido utilizadas para se chegar a umacomunicao mais efetiva nas aulas a distncia. Umexemplo disso o uso do LCMS em conjunto com oSkype. Sendo que o LCMS utilizado efetivamentecomo 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 evdeo. Grande maioria dos LCMS gratuitos no ofe-rece esse recurso. Junto com o Skype, muitas vezestambm utiliza-se um plugin chamado Festoon, quedentre outras funes possibilita compartilhar odesktop do computador, outra caracterstica ausenteem LCMS atualmente.

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

  • 8/8/2019 PHP Magazine 003

    18/3918 - 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 deassistir as aulas e praticar os exerccios em sua pr- pria casa.

    Com o surgimento da televiso digital, criou-seuma grande expectativa com relao a seu uso emEAD, pois a mesma possibilita a integrao entrevrios meios de comunicao, como internet, rdioe televiso. Tal integrao possibilitar o desenvol-vimento de programas de EAD que envolvam todosos benefcios j citados, como comunicao por v-deo e udio, utilizao de LCMS. Tudo ao mesmotempo em apenas um equipamento (e acessrios ne-cessrios). Porm, o uso dessa tecnologia ainda vaitardar, 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 setratando de EAD, a Internet oferece, como foi anali-sado anteriormente, meios de comunicao entregrupos 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 efacilitado tal integrao. Exemplosdisso so softwares que permitem aleitura de textos: o Dosvox [14] e oWebbie (browser para deficientes

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

    Os padres de acessibilidade para web definemregras 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 diversasferramentas de validao como: o DaSilva [10], oHera [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 issoacontea. De que adianta um LCMS, com designsofisticado, muitas ferramentas de comunicao,mas pssima navegabilidade pelo teclado e in-compatibilidade com navegadores mais antigosou pouco usados? Para que isso no acontea necessrio, no somente usar essas ferramentasde validao, mas tambm testar com vrios usu-rios e com as mais diversas dificuldades e plata-formas, para s assim ter alguma garantia de queo software acessvel a todos ou pelo menos paraa 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 tp : / /www.t t i ssa .org /e- learn 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 w w. 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 : / / w w w. a c e s s o . u m i c . p t / w e b a x /examinator.php

    Josiane Lima de Oliveira - [email protected] - www.josianeolive.blogspot.comFormada em Tecnologia em Processamento de Dados pela Universidade Federal do Par. Atua desde 2004 com

    Analista de Suporte na Empresa de Processamento de Dados do Estado do Par (PRODEPA) e no desenvolvimende pginas web de forma autnoma.Formada em Tecnologia em Processamento de Dados pela Universidade Federal do Par. Atua desde 2004 com

    Analista de Suporte na Empresa de Processamento de Dados do Estado do Par (PRODEPA) e no desenvolvimende pginas web de forma autnoma.

  • 8/8/2019 PHP Magazine 003

    19/39PHP Magazine - 3a Edio - 19

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

    mente se chamava PHP IDE Project, um projetoque fornece uma ferramenta de desenvolvimento baseada na plataforma Eclipse. O projeto abrange odesenvolvimento de componentes necessrios parase 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 centradosem 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 testesforam feitos em ambiente Windows com o pacotecompleto do PDT (PDT All-in-One ).

    Aps baixarmos o zip, o descompactamos emum diretrio qualquer do disco, abrimos a pasta E-clipse e executamos o arquivo eclipse.exe. Estafoi a instalao. simples e breve. No se esquea

    que o Eclipse feito em Java, portanto necessita deuma 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 Eclipsetermina de carregar seus mdulos e est pronto para

    ser usado em seus projetos. Lembramos que essemesmo Eclipse baixado pode ser utilizado no scom 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 oitem PHP contendo as principais configuraes de projetos PHP. Nesta parte voc pode configurar de-talhes de execuo, como se o padro utilizar PHP4 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 CPDT, Delphi e Dreamweaver CPDT, Delphi e Dreamweaver C

    por Adler Medrado Flvio Fagundes Ricardo Arago

    Nesta edio optamos por apresentar aos nossos leitores um pequeno tour por algumas das IDEs mais conhecidas pela comunidade. No foi possvel explorar ao mxcada 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.

  • 8/8/2019 PHP Magazine 003

    20/3920 - 3a Edio - PHP Magazine

    arquivos, e detalhes do servidor padro em que asfontes ficaro, o que no necessita ser no diretrioda 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 itemGeneral/Workspace, vocdeve definir qual a codificao de ca-racteres deseja utilizar para arquivostexto. Voc tambm pode fazer essadefinio por extenso de arquivo. Bas-ta selecionar oGeneral/Content Types eexpandir a rvore direita e ir at o i-tem PHP. Nele voc pode modificar acodificao para todas as extenses dePHP. Isto importante principalmentese voc vai importar projetos j existen-tes para o PDT. Na maioria das vezesos editores utilizam a codificao LA-TIN-1 (ISSO-8859-1).

    Estas configuraes podem ser feitas de modo quetodos 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 PDTno desenvolvimento. Ento, vamos criar o nosso primeiro projeto PHP, atravs do menu File/New/

    Project . Desse modo teremos uma janela dewizard com o tipo de projeto que desejamos, no caso umPHP Project. Avanando teremos uma janela onde preencheremos o nome do projeto, o local de arma-zenamento dos fontes, que pode ser diferente doworkspace , 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 mostraum projeto aberto no PDT.

    Figura 3 Interface do PDT

    Nesta janela podemos perceber a quantidade defuncionalidades que o Eclipse fornece, como a rvo-re do projeto, ooutline com as classes, funes edentre outras, a sada do debug, obrowser output ,erros direto no cdigo fonte, sada no console, etc.Cada desenvolvedor pode organizar as subjanelasdo seu melhor modo. Lembramos que para rodar odebug e a execuo dentro do Eclipse, necessria aconfigurao 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 oSubversion , atravs do plugin subclipse . H diversosoutros 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 desteano. 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 aannotations ; suporte inicial a refatorao

    integrar editores de HTML, CSS e JavaScriptO nico pesar do Eclipse que como feito emJava necessita de uma mquina razovel com ummnimo de 512MB de RAM, pois o que utilizamos,

  • 8/8/2019 PHP Magazine 003

    21/39PHP 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 oapoio da comunidade pode melhor-lo ou destru-lo.Como o seu desenvolvimento uma parceria da IBM com a Zend, podemosesperar at uma boa integrao com oZend Framework.

    Apresentando o Delphi for PHPEsta 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 umaferramenta que permitisse gerar cdigo PHP manipulando os obje-tos visualmente. A ferramenta praticamente baseada nos compo-nentes denominados VCL, que soescritos em PHP5 e, em diversoscasos, apenas abstrai o acesso acomponentes j existentes e bemconhecidos dos desenvolvedoresPHP como AdoDB, Xajax, JsCalendar, entreoutros.

    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 etornam 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 emok, e o projeto ser criado. Na seqncia, surgirser a interface abaixo. A viso de design e nenhumobjeto gerado at o momento.

    Figura 5 Interface principal da IDE na viso design

    Em seguida, clicamos na aba Data Explorer , nolado direito da tela e configuramos uma conexocom o banco MySQL.

    Figura 6 Configurando uma conexo com o MySql

  • 8/8/2019 PHP Magazine 003

    22/3922 - 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 umbrowser , o resultado apresentado ser semelhante aoda figura seguinte.

    Figura 8 Resultado apresentado da execuo da aplicao no Internet Explorer

    Fazer um grid como esse, com recursos que permitem a edio semreload da pgina e sem ointermdio 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 acimafoi:

    Debugger interno e compatibilidade do cdigo gerado

    O Delphi conta com umdebugger interno, cha-mado PHP DBG Listener , que umdebbuger que possui versofree e verso comercial. Este ode-bugger para PHP mais conhecido e tem sua qualida-de comprovada pela comunidade. A verso Free j suficiente para a maioria dos desenvolvedores efoi 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 divulgadoque o cdigo seria compatvel com PHP a partir daverso 5.1, porm, devido a mudanas na extensofilter do PHP, o cdigo deve ser compatvel apenascom 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. Noentanto, isso gera um trabalho manual que vai con-tra o princpio da utilizao desta IDE, que a pro-dutividade. Dependendo da estrutura utilizada, podeser 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

  • 8/8/2019 PHP Magazine 003

    23/39PHP Magazine - 3a Edio - 23

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

    Gerando Build Aps finalizar o desenvolvimento da aplicao,

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

    Nos testes surgiram alguns problemas com obuild gerado, devido a umbug 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 jencomendaram a sua licena junto Codegear/Borland e esto bastante ansiosas.

    Acredita-se que ela ser amplamente utilizadaem ambientes corporativos que ainda no adotaramo 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 plataformade desenvolvimento.

    O Dreamweaver CS3O Dreamweaver foi uma das

    ferramentas que mais garantiu desta-que para a sua empresa mantenedo-ra, a Macromedia, recentemente foiadquirida pela Adobe. Diferencia-seem algumas caractersticas de outrosambientes de desenvolvimento maistradicionais, como o Eclipse PDT ,Zend, ou mesmo do recm lanado

    Delphi PHP.Com um foco inicial em layoute design, aos poucos foram introdu-zidos alguns recursos relacionadoss linguagens de programao paraweb, como o prprio Coldfusion,linguagem proprietria da Macrome-dia, que estendeu-se at o ASP ePHP.

    Tal o seu grau de utilizao por muitos desenvolvedores, queoptamos por conceder destaque paraessa IDE, que h pouco tempo apresentou a suamais recente verso: o Dreamweaver CS3.

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

    timo editor de Layout parawebsites , pois apresen-tava recursos de uma forma melhor e mais comple-ta, do que ferramentas similares da poca como oFrontPage, Netscape Composer, dentre outros. Al-guns requintes, tais como menus prontos em Javas-cript , tambm faziam parte do pacote. Sua adoodentre webdesigners cresceu muito, tornando estaferramenta 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 verificaode sintaxe. Inclusive, durante a codificao HTML,as verses mais recentes procuravam definir estilosCSS para as aes do usurio (definio de tipo etamanho 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 detags no fechadas ou atributosduplicados, propriedades que no so compatveiscom todos osbrowsers . 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 maiswizards ao usurio.

    Figura 9 Viso geral do Dreamweaver CS3

    Na figura 9, pode-se observar uma viso geral

  • 8/8/2019 PHP Magazine 003

    24/3924 - 3a Edio - PHP Magazine

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

    1.botes de acesso rpido para alternar entrecdigo gerado, aspecto visual dos itens e ummisto de ambos;

    2.abas para alternar entre os documentos emedio;

    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 umaavaliao por trinta dias.

    A instalao bastante simples, sendo apenasnecessrio 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 definiode algumas caractersticas bsicas como diretriodas pginas,host onde sero alocadas as pginas,usurio e senha para conexo. Abaixo apresentadaapenas 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 ummesmo site . Estas configuraes adicionais so paracontrole de edio concorrente de arquivos do site .

    Desenvolvimento em equipe Muitos podem desconhecer, mas o Dreamwea-

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

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

    Voc encontrar mais informaes sobre suautilizao na nota tcnica da Adobe citada nas refe-rncias deste artigo. Basicamente quando o usuriorealiza um check out em um arquivo, est obtendo averso 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. Osoutros usurios visualizaro o arquivo com o conede 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

  • 8/8/2019 PHP Magazine 003

    25/39PHP Magazine - 3a Edio - 25

    Sempre que se for iniciar um turno de trabalho,recomenda-se fazer a operao de sincronizao paraobter a verso mais recente dos arquivos do servidor para o diretrio local. Antes de concluir esta operao,o Dreamweaver exibe uma listagem dos arquivos quesero 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 parao diretrio local.

    No abordamos neste artigo a possibilidade dautilizao do Visual SourceSafe(VSS) integrado aoDreamweaver. 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, ousurio poder definir componentes visuais que seutilizam desse framework, que dever ser exportado junto com a aplicao. O Spry sedivide em trs grupos de funcionali-dades: Spry Data, Spry Widgets eSpry Effects.

    Com o Spry Data, possvelintegrar facilmente o banco de dados

    ou os arquivos XML aplicao, jcom opes de filtro e ordenao.Por meio do Spry Widgets, po-

    de-se facilmente adicionar elementoscomo listas, abas, validao de for-mulrios etc. Estes elementos podemmudar a apresentao da sua aplica-o.

    J com o Spry Effects, poss-vel adicionar elementos de efeitosvisuais 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 deferramentas.

    Figura 12 - Paleta dos componentesSpry

    O diferencial da ferramenta oferecer ao usu-rio todos esses recursos apenas a um clique, arras-tando e definindo propriedades dos elementos, paraalter-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 como banco de dados e criar listagens com paginaosem 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 istocom o auxlio e a facilidade da interface visual daIDE. Na figura abaixo, a definio de um RecordSete 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. Osrecursos advindos com oSpry reduzem o esforo de buscar bibliotecas para necessidades de abas, menus

    e algumas animaes em sua aplicao.Concluindo

    Procuramos expor alguns pontos importantes

  • 8/8/2019 PHP Magazine 003

    26/3926 - 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 seriaadequado compar-las, pois so projetos diferentesentre si. O PDT um timo produto da consagradaferramenta Eclipse. O Delphi estabeleceu fortes ali-cerces no desenvolvimentodesktop e agora est buscando participao no desenvolvimento Web. Eo Dreamweaver que, de uma ferramenta dedesign elayout , 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 PHPhttp://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 Cosultoria. Alm disso, tambm proprietrio da empresa Nesher Technologies que presta servios de consultoria para 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] Fagundes formado em Cincia da Computao pela PUCRS em 2003 e atualmente trabalha como analis

    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 sistmas e tambm um dos fundadores da revista PHP Magazine, participando ativamente de sua gesto.

    Ricardo Arago da Silva - [email protected] - www.raragao.eng.brEngenheiro 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 faculdades de Braslia no Distrito Federal.

    Atualmente chefe da Clula de Desenvolvimento do Centro de Desenvolvimento de Sistemas (CDS) do ExrcBrasileiro, onde desenvolve sistemas com as mais diversas tecnologias de mercado. tambm fundador e administrador da revista PHP Magazine.

  • 8/8/2019 PHP Magazine 003

    27/39PHP Magazine - 3a Edio - 27

    1. IntroduoDevido ao alto custo da aquisio de ferramen-

    tas de aplicaes de gerenciamento e da necessidadede aquisies de outras ferramentas auxiliares taiscomo 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 anecessidade de criar uma soluo, a qual atendessetodos esses requisitos.

    Com a constante evoluo das ferramentas paradesenvolvimento de aplicaes via Web, que so programas de computador aos quais usurios aces-sam com umWeb Browser na Internet, tambm soWebsites dinmicos que oferecem no somente in-formaes estticas para os usurios, mas os deixausar ferramentas dinmicas para trabalhar com umaaplicao, disponibilizando informaes gerenciaisem qualquer lugar do mundo. Entende-se que comessa afirmao um administrador de empresas, comfiliais espalhadas em localidades distantes geografi-camente, pode acompanhar toda movimentao daempresa 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 aqual rodaria em ambienteWeb .

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

    a fim de otimizar o tempo de desenvolvimento dosmesmos. 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 desenvolvimentodo Guar foi o PHP, que no compilado, mas siminterpretado por um servidor Web no provedor quehospeda o CGI. Por esse motivo o torna mais rpidodo que os CGIs escritos em outras linguagens comoC e Perl. Um segundo motivo que levou o desenvol-vimento em PHP, foi a vasta bibliografia encontradae a grande gama de profissionais com conhecimentoe utilizao desta linguagem.

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

    2. O Gerenciador GuarO Gerenciador Guar o conjunto da necessida-

    de da evoluo para desenvolvimento de aplicaes viaWeb agregado filosofia da tecnologia Web sob De-manda juntamente com a linguagem PHP e a alternativade 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 DadosLivres.

    SOFTWARE LIVRE

    GuarGuarGuar Uma soluo em software livre parareduo de custos no desenvolvimentode aplicaes Web

    por Pascoal Vernieri

    Este artigo tem por objetivo demonstrar o Gerenciador Guar como uma alternati

    desenvolvida em software livre para reduo de custos no desenvolvimento de aplies Web, bem como, comparar as vantagens de sua tecnologia sob as formas tradicionais de desenvolvimento de aplicaes Web.

  • 8/8/2019 PHP Magazine 003

    28/3928 - 3a Edio - PHP Magazine

    2.1. Funcionamento So as facilidades oferecidas pelo Gerenciador Guar,

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

    Diferente da forma tradicional de programao, oGuar 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, bemcomo a implementao da tabela no Banco de Dados. AsURLs criadas pelo gerenciador no existem fisicamente emum arquivo para serem publicadas, so encontradas somen-te suas definies armazenadas no Banco de Dados paraque, quando forem solicitadas, elas sejam disponibilizadasem formato HTML e JavaScript .

    Esta agilidade se d por meio da utilizao de um Di-cionrio de Dados on-line, advindo da montagem das telasatravs da leitura dinmica de critrios e parmetros tcni-cos cadastrados no Banco de Dados, juntamente com oconceito de Auto Gerenciamento e das caractersticas deOrientao a Objetos e Orientao a Eventos em todos oscomponentes 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 dosdados), 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 umaarquitetura natural Intranet / Extranet;

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

    Uso de algoritmo de armazenamento de dados despro-vido de quaisquer declaraes e totalmente dinmico, ouseja, "desprovido de declaraes". Significa, portanto, queno preciso declarar o nmero de dimenses ou intervalosde 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, enem nas pginas Web envolvidas;

    Registro automtico dos dados do operador credencia-do, identificando seu nome, o tipo de atualizao e a data ehora 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 deregistros excludos);

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

    a Eventos em todos os componentes disponibilizados pelaaplicao;

    Parmetros de desenvolvimento totalmente escalveise 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 desenvolvimentoPara 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 aplicaosimples, 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) ee-mail . O campoestado ser relacionadocom a tabela d99 j existente, mostrando na tela o seu se-gundo campo. O campopas , 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 dedentro do Guar a URL (d101) Cadastro de URL,

  • 8/8/2019 PHP Magazine 003

    29/39

  • 8/8/2019 PHP Magazine 003

    30/3930 - 3a Edio - PHP Magazine

    nicao com o Banco de Dados e, finalmente, public-losem um diretrio Web. Note que a forma tradicional de de-senvolvimento envolve vrios profissionais, diferentementedo 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 demaneira essencial para a sobrevivncia dessas organiza-es. Logo, todas as organizaes de certo modo precisaminvestir algo em tecnologia. Mas por que no investiremmenos 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, gerandoassim impactos de escala macroeconmica.

    O impacto nas redues de custos gerados pelo Guarinterfere diretamente nas aquisies de licenas de Bancode Dados, visto que no h necessidade de adquirir: (1) umBanco 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 facilidadede 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 deAplicaes Web.

    Consideraes finaisEste artigo mostrou que o avano tecnolgico exige

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

    Esta tendncia, aliada tecnologia Web sob demandamais a linguagem PHP e alternativa de escolha do Bancode Dados por parte do cliente, permitiram a idealizao doGerenciador 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 ? , e m h t t p : / /www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1553. Brasil: maro de 2004.

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

    Amadeu, Srgio. Entrevista ComCincia , emhttps://gestao.idbrasil.gov.br/ menu_interno/d o c s _ p r o g _ ge s a c / a r t i g o s _ en t r e v i s t a s /Document.2004-06-16.2523. Brasil: Abril de 2007.

    Figura 5 Estrutura de armazenamento matricial da Tabela d100

    Pascoal Vernieri - [email protected] em Informtica pela URCAMP/RS. Especialista em Desenvolvimento de SW para WEB pela UNIVALem Engenharia de Projetos de SW pela UNISUL/SC. Atuando desde 2001 com desenvolvimento WEB, possui slconhecimentos em PHP, JAVA, MySQL e Oracle.Professor da UnisulVirtual e Analista de Sistemas do Ncleo de Informtica da Unisul, desenvolve tambm atividade Consultor Autnomo. Bacharel em Informtica pela URCAMP/RS. Especialista em Desenvolvimento de SWWEB pela UNIVALI/SC e em Engenharia de Projetos de SW pela UNISUL/SC. Atuando desde 2001 com desenvmento WEB, possui slidos conhecimentos em PHP, JAVA, MySQL e Oracle.Professor da UnisulVirtual e Analista de Sistemas do Ncleo de Informtica da Unisul, desenvolve tambm atividade Consultor Autnomo.

  • 8/8/2019 PHP Magazine 003

    31/39PHP Magazine - 3a Edio - 31

    A linguagem PHP , sem dvida, uma das mais populares quando o assunto desenvolvimento deaplicaes web. Existe, porm, um preconceito mui-to grande com a linguagem quando a questo se-gurana. Neste artigo veremos 6 requisitos bsicosque toda aplicao deveria possuir e que implemen-taro o mnimo de segurana em tudo o que vocdesenvolver.

    Conceito: PHP uma linguagem mais vul-nervel do que as outras?Atualmente impera no mercado de desenvolvi-mento um preconceito relacionado segurana deaplicaes PHP. A linguagem frequentemente al-vo de duras crticas por parte da prpria comunidadede desenvolvimento, e no raro presenciarmos a- plicaes extremamente vulnerveis que, com todaa certeza, do razo a estas crticas.

    Este preconceito, totalmente equivocado, temsuas origens especialmente na extrema flexibilidadede configurao e uso da linguagem e no nmerocada vez maior de desenvolvedores inexperientesque comeam sua carreira desenvolvendo aplica-es PHP, ignorando questes bsicas, seja por faltade conhecimento ou porque esto procurando agili-zar a sua produo pessoal.

    Este artigo no destinado apenas aos que es-to comeando. surpreendente o nmero de de-senvolvedores mais experientes que, por terem ad-quirido vcios, ainda ignoram as