Primeiros passos com YeAPF


Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/wp-db.php on line 3030

Tive oportunidade de ver minha irmã mais nova andar sozinha pela primeira vez e nunca mais esqueci da experiência.  Anos depois naceram os filhos e o impacto é tremendo.

Brinco com quem programa usando YeAPF de que são meus filhos, carinhosamente. Por isso que os primeiros passos são importantissimos para mim.  Tentarei resumir então em poucos passos os primeiros a serem dados para botar o YeAPF para rodar que serão os seguintes: 1) Instalação dos pacotes básicos para que o YeAPF rode 2) Criação de um banco de dados de testes 3) Instalação do YeAPF 4) Elaboração do seu primeiro aplicativo.  Como um passo depende do outro, não avance se não conseguiu resolver o passo anterior.

1) Instalação dos pacotes básicos

Para chegar a bom porto, este exemplo precisa que sua máquina (Linux ou Windows) esteja com os seguintes pacotes instalados: apache2, php5, mysql-server e php5-mysql.  Ou resumindo: LAMP

Em linux (no caso Ubuntu) a instalação é simples:

$ sudo apt-get install apache2 mysql-server php5 php5-mysql

Já em Windows, usamos UwAMP que pode ser obtido em http://www.uwamp.com/en/

Seja lá como for, o importante é você saber qual é sua pasta base de desenvolvimento.  No caso de uma instalação típica Ubuntu/Debian esta pasta está em /var/www.  Já se instalou em CentOS/RHEL/Fedora esta mesma pasta se chama /var/www/html e, finalmente, se usou UwAMP e instalou em C:\UwAMP, então sua pasta base será C:\UwAMP\www.   Imagino que se está lendo isto, terá suficiente estrutura como para achar por próprias mãos onde está sua pasta base.  Para facilitar a escrita deste blog, assumirei uma instalação em Ubuntu cuja pasta base é /var/www.  Ajuste para o seu caso particular.

Para editarmos o código fonte usamos Geany que roda tanto em Windows como em Linux, porém, em Windows alguns preferem Notepad++ que é uma outra excelente opção.  Ah, sim, não usamos NetBeans, Eclipse, etc..  Sim, nem para depurar.  Todavia, temos nossos olhos postos em WebStorm caso queira saber se somos loucos escovadores de bits.

2) Criação de um banco de dados de testes

Como não é o foco deste blog falar sobre segurança de banco de dados, assumirei que estaremos usando o usuário ‘root‘ com a senha ‘abc123‘  definida durante a instalação. Mais uma vez, faça os ajustes necessários para o seu caso durante a leitura.  E não confunda o usuário root da sua caixa Linux com o usuário root do mysql.

Cabe esclarecer que se você estiver testando em um servidor alugado, seu nome de acesso, senha e IP de conexão serão definidos pelo administrador do servidor ou por você mesmo usando as ferramentas que seu hospedeiro lhe disponibilize.

Faça download do banco de dados de demonstração clicando aqui e crie um banco de testes no seu servidor mysql instalado logo acima.

Caso esteja usando Linux, os seguintes passos (grifados em negrito para facilitar a compreensão) devem ser suficientes.  Lembre que estamos pensando em uma distribuição Ubuntu/Debian em que os downloads caem na pasta do usuário chamada Downloads (com a primeira ‘D’ em maiusculas).  Se estiver usando CentOS/RHEL a pasta chamar-se-ia downloads.  Para os recem iniciados, lembre de dar um enter após cada comando, o $ é o símbolo do sistema (que pode ser diferente na sua distribuição) e ele é sensível às minusculas, maiusculas.

Para quem está fazendo com Windows e instalou UwAMP, pode conectar-se ao banco de dados por meio do console (Iniciar | Executar | cmd) da seguinte forma:

C:\Users\Pepe> cd c:\UwAMP\bin\database\mysql-5.6.11\bin
C:\UwAMP\bin\database\mysql-5.6.11\bin> mysql -u root -proot

(Observe que não há espaço entre o parâmetro ‘-p’ e a senha ‘root’.  Em tempo, a senha padrão que o UwAMP faz para o mysql é root)

A partir dai os passos são os mesmos que para um usuário Linux como se detalham a continuação:

$ mysql -u root -pabc123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 747
Server version: 5.5.34-0ubuntu0.13.04.1 (Ubuntu)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database testes;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on testes.* to pepe@localhost identified by 'abc123';

mysql> exit
Bye
$ cd
$ unzip Downloads/baseTestes.zip
$ mysql -u pepe -pabc123 testes < baseTestes.sql 

Uma mensagem de advertência do mysql dizendo que é inseguro colocar a senha na linha de comando é comum na execução deste último comando

Caso não tenha instalado o unzip no linux então, instale ele com

$ sudo apt-get install zip unzip

Repare que nos comandos mysql há um espaço entre o parâmetro e a opção do parâmetro como em -u root. A exceção é quando estamos indicando a senha como em -pabc123.  Lembre, contudo, de substituir abc123 pela senha que você colocou na hora da instalação no seu mysql.

Como sempre, o exemplo já é simples o suficiente para evitar o degradante copiar e colar de muitos hoje em dia.  Então gaste um pouco mais do seu tempo e fixe os comandos na sua cachola digitando eles.

Todavia, se chegou até aqui, uma boa recompensa é lhe indicar que instalando phpMyAdmin a gestão do banco fica bem mais fácil tanto em Linux quanto em Windows.  Para Windows, a melhor recomendação é HeidiSQL

3) Instalação do YeAPF

Faça download da última versão do YeAPF.  Na hora de escrever este blog, estamos na versão 0.8.25. Mas o exemplo aqui entregue deve funcionar bem desde a versão 0.8.0 em diante.

Descompacte o conteúdo do arquivo para uma pasta sob a sua pasta base.  Costumamos colocar o YeAPF sob /var/www/YeAPF/ nos Ubuntu/Debian mas nada impede de colocar ele em outra pasta da sua preferencia, inclusive em uma subpasta de um projeto YeAPF.  (é.. o próprio framework embarcado na própria pasta do aplicativo… ainda não viu nada meu chapa).  Porém, por hora, deixe ele na pasta padrão /var/www/YeAPF se estiver em Ubuntu ou C:\UwAMP\www\YeAPF se estiver usando Windows

Em Ubuntu/Debian ficaria assim:

$ cd /tmp
$ wget http://www.inovacaosistemas.com.br/downloads/YeAPF/YeAPF-0.8.25.zip
$ mkdir -p /var/www/YeAPF
$ cd /var/www/YeAPF
$ unzip /tmp/YeAPF-0.8.25.zip

Você terá certeza de que o YeAPF está no local correto se o arquivo xYApp.js está na pasta que você tenciona usar.

A turma do arrastar e soltar já se vira sozinha para soltar os arquivos no local certo.

Como esta pasta será de só leitura, não há necessidade de corrigir os direitos da pasta.  De qualquer forma, vale o aviso para manter a amizade de que às vezes precisamos entregar a pasta inteira (arquivos, sub pastas) para o apache2 controlar.

Isto feito, seu YeAPF está pronto para ser usado.  Vale destacar que o procedimento se o seu servidor é local ou remoto, se for acessível por ssh, console local ou ftp,  é similar.  Já se quiser instalar as ferramentas do YeAPF o procedimento é um pouco diferente mas nada que provoque taquicardia.

4) Elaboração do seu primeiro aplicativo

Ufa!… Até que enfim.  Neste primeiro momento, faremos uma coisa muito simples, que é mostrar o conteúdo da tabela autores que está no banco de testes.  O faremos usando o modelo preprocessado que é aquele que ensambla os dados e a visualização no servidor antes de enviá-los para o cliente.  YeAPF também faz pós-processado e MVC mas isso é farinha de outro saco.

Seguiremos os seguintes passos: a) Criação da pasta para conter meu aplicativo b) Configuração da conexão com o banco de dados c) Elaboração dos dois arquivos que compõem meu aplicativo

4.a) Criação da pasta para conter meu aplicativo

Digamos que seu aplicativo vai se chamar meuPrimeiroApp, então precisamos criar uma pasta sob a pasta base do apache

$ mkdir /var/www/meuPrimeiroApp

Isso fará com que quando você navegar usando seu navegador preferido (que pode ser escolhido do conjunto finito: Mozilla, Safari, Chrome, nessa ordem) poderá visualizar o conteúdo da pasta com http://localhost/meuPrimeiroApp. E qualquer arquivo que você colocar na pasta, aparecerá na navegação.

Para facilitar o desenvolvimento, reduziremos o nível de segurança da pasta, porém, mais uma vez, vale dizer que este não é um blog orientado à segurança.  Quando chegue o momento, falaremos disso.

$ chmod 0777 -fR /var/www/meuPrimeiroApp

Agora vamos copiar dois arquivos (configure.php e yeapf.db.ini) para dentro da pasta.  Isso é tudo o que vamos precisar para que o YeAPF rode certinho.

$ cd /var/www/meuPrimeiroApp
$ cp /var/www/YeAPF/appSkeleton/configure.php .
$ cp /var/www/YeAPF/appSkeleton/yeapf.db.ini .

Nota para YeAPF 0.8.5xIndique ao configure.php onde localizar o YeAPF. Para isso, use o arquivo search.path ou yeapf.path no mesmo nível que o configure.php. Neste exemplo, esse arquivo conterá uma linha dizendo apenas: “../YeAPF”

4.b) Configuração da conexão com o banco de dados

Antes de rodar o configure.php, altere os seguintes valores no yeapf.db.ini

dbType=mysql
dbServer=localhost
dbName=testes
dbUser=pepe
dbPassword=abc123
dbConnect=yes

Lembre que os valores aqui colocados tem a ver com o restante do exemplo.  Ou seja, se seu banco não for mysql, ou não estiver no mesmo em que o apache está ou não se chamar testes ou não usar pepe/abc123 para conectar, você deverá fazer as alterações necessárias

Caso esteja usando Windows, crie uma pasta chamada “.config” sob sua pasta “meuPrimeiroApp“.  Dentro desta pasta “.config“, crie um arquivo texto chamado “lock_version” contendo “1”.  Por padrão YeAPF tenta usar memória compartilhada para as travas de concorrência.  A não ser que esteja usando um NT (2003, 2008, …) seu sistema operacional não suporta bem memória compartilhada no PHP.  Esse “1” no “.config/lock_version” força a usar arquivos temporários.

Após feito isso, rode o configure usando seu navegador acessando http://localhost/meuPrimeiroApp/configure.php

Se tudo deu certo, você verá uma tela com uma tarja verde dizendo que está tudo ok.  Na sua pasta agora terão sido criadas mais algumas pastas e arquivos auxiliares.  É de especial importância o sgug.ini que é o que controla a conexão com o banco de dados.  yeapf.db.ini já pode ser apagado.

4.c) Elaboração dos dois arquivos que compõem meu aplicativo

Agora vamos ao que interessa (só agora!?)  Vamos rápido então.

Crie um arquivo chamado listarAutores.php com o seguinte conteúdo

<?php
  include_once "yeapf.php";
  processFile("i_autores");
?>

Agora crie um arquivo chamado i_autores.html com o seguinte:

<html>
  <table>
    #for("SELECT a.*, u.nome as nomeUF
          FROM autores a 
               left join ufs u 
               on u.uf=a.ufNascimento 
          order by nome")
      <tr>
        <td>#(nome)<br><small>#date(dataNascimento) - 
            #date(dataFalecimento)</small></td>
        <td>#(localNascimento) #(nomeUF)</td>
        <td>#(estiloPrincipal)</td>
      </tr>
    #next
  </table>
</html>

 

Pronto, rode seu aplicativo http://localhost/meuPrimeiroApp/listarAutores.php

Mais claro do que isso, só jogando água. Uma das claras vantagens do paradigma proposto por YeAPF em que a lógica é separada do ensamblado dos dados é que o código se torna -em grande medida- autoexplicativo.

 


Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 383
Posted in Yet Another PHP Framework