Miniframework PHP

Nas últimas semanas fiz uma pesquisa para encontrar um framework PHP que eu pudesse usar em meus aplicativos/sites. Encontrei vários frameworks interessantes como:

  • Symphony
  • Prado
  • Code Igniter
  • Zend Framework

Depois de ver vários deles uma pergunta me ocorreu: “realmente preciso de um framework?”. Realmente utilizar um destes frameworks auxilia bastante o desenvolvimento, evitando que você refaça coisas que já existem. Mas muitas vezes estes frameworks possuem alguns problemas:

  • são muito maiores do que você precisa;
  • a documentação é confusa;
  • poucos estão suficientemente maduros;
  • é preciso aprender uma nova sintaxe ou maneira de se desenvolver;
  • você fica “engessado”, é difícil fazer coisas mais avançadas ou que saem do padrão CRUD;

Então pensei que o que eu preciso é somente uma maneira de separar a lógica da apresentação, uma maneira de facilitar o acesso a bancos de dados e algo que me ajude a trabalhar com AJAX. Assim, peguei algumas idéias que vi nas documentações que li e algumas coisas que já utilizava e uni tudo para suprir minhas necessidades.

Modelo de aplicação

MVC Architecture?
Segundo Rasmus Lerdorf, criador da linguagem PHP, “MVC é palavra do momento em arquiteturas de aplicação web. Ela vem do design de aplicações para desktop orientadas a eventos e não se aplica muito bem no design de aplicações web. Mas felizmente ninguém sabe exatamente o que MVC significa, então você pode chamar seu mecanismo de separação de camada de apresentação de MVC e seguir em frente.”
Então, o que estou usando aqui é somente um mecanismo de separar o layout (html+css) do código PHP. Ao invés de usar as três camadas do MVC eu resumi para duas, Visão e Controle.
A parte da visão é representada por templates. Seguindo outra tendência que percebi em outros frameworks a parte de visão é representada por simples scripts PHP ao invés de utilizar uma das ferramentas de Templates como Fast Template, Smarty, etc. É mais simples de trabalhar e não é necessário aprender uma nova sintaxe.
Para a parte do controle eu desenvolvi uma classe chamada app. Nesta classe eu controlo as ações do usuário. Ela age como o controlador das aplicações testando qual ação o usuário escolheu e invocando o método correto (que deverá ser reescrito nas suas subclasses, as novas aplicações). A idéia é que cada aplicação seja uma subclasse da classe app.
Este é o código da classe app:

Classe app

Outra classe desenvolvida é a classe tabela. Esta classe é responsável por abstrair e facilitar a manipulação de tabelas de bancos de dados. Seu código fonte é descrito abaixo.

Classe tabela

Exemplo de aplicação
Para ilustrar o funcionamento eu criei uma pequena aplicação com as classes. A aplicação é um sistema de blog, com posts e comentários.

A estrutura de diretórios ficou assim:
classes/ – diretório com as classes
classes/app.php – classe app
classes/tabela.php – classe tabela para tratamento de tabelas no banco de dados
classes/adodb – classes adodb para abstração de bancos de dados. necessário para a classe tabela.
classes/JSON.php – para utilizar JSON, usado por algumas páginas que usam AJAX
blog/ – diretório da aplicação
blog/index.php – subclasse da classe app
blog/view/ – diretório com as visões
blog/view/index_view.php – visão inicial
blog/view/login_view.php – visão da página de login
blog/view/comentario_view.php – visão dos comentários
blog/view/admin_view.php – visão da página de administração
blog/view/estilo.css – arquivo com as definições de CSS para as visões
blog.sql – arquivo sql com os comandos para criar as tabelas da aplicação
A primeira tarefa é criar a base de dados e as tabelas que serão utilizadas no exemplo. Para isso foram executados os seguintes comandos sql (gravados no arquivo blog.sql):

create database blog;
use blog;
create table post (id_post int primary key auto_increment, tit_post varchar(255), ds_post text, dt_post date);
create table comentario(id_com int primary key auto_increment,ds_com text, email_com varchar(100), id_post int);

A base de dados usada neste exemplo é o MySQL.
O código do arquivo index.php do diretório blog deve ser uma subclasse da classe app. O código inicial ficou desta forma:

index.php – inicial

O primeiro método a ser escrito é o método index(). Este método é o método inicial da aplicação. O construtor da classe app sempre vai invocar este método caso não tenha sido escolhida outra opção.
Complementando o código:

index.php – metodo index()

O código do arquivo view/index_view.php é o seguinte:

index_view.php

O método showView da classe app vai transformar cada índice do vetor $dados em uma variável ou
em um novo vetor. Então o script index_view.php vai simplesmente imprimir seus valores.
Uma nova linha deve ser adicionada no final do arquivo index.php :

$blog = new blog(“mysql://root:@localhost/blog”);

Nesta linha é instanciado um novo objeto da classe blog criada. Como parâmetro para o construtor da classe é enviado a string de conexão com a base dados. Esta string é no formato usado pelo ADODB e a sintaxe para diversos bancos de dados podem ser encontradas no site da ferramenta.
Executando-se a aplicação deve-se obter o seguinte resultado:

img1.jpg
Todas as definições de cores, fontes e estilos foram adicionadas no arquivo estilo.css utilizando-se as técnicas de CSS. Desta forma, os arquivos de visão não possuem formatações de estilo e sim somente informações dos dados que devem ser gerados. A parte de formatação fica em separado, o que facilitaria caso fosse necessário alterar as definições de layout da aplicação. O código do arquivo estilo.css é o seguinte:

estilo.css

O próximo passo é criar as outras ações da aplicação. Por exemplo, quando o usuário clicar no link comentários ele será direcionado para:

http://localhost/blog/index.php?op=comentarios&id_post=15

Como a variável op controla a ação que o usuário escolheu precisamos definir um novo método na classe blog para atender a esta requisição. Então o seguinte código deve ser adicionado aos métodos da classe blog (arquivo index.php):

index.php – método comentario()

O método comentarios() faz uso da visão comentario_view.php. Seu código é:

comentario_view.php

Assim, quando o usuário clicar no link “Adicionar comentário” na página inicial serão apresentados os comentários existentes e um formulário para adição de um novo comentário, conforme a imagem abaixo ilustra:

img2.jpg
Quando o usuário submeter os dados do novo comentário a ação “addComentario” será executada, como indicado pelo input hidden chamado op na linha 26 do comentario_view.php. Para que esta ação seja executada o seguinte código deve ser adicionado no arquivo index.php.

index.php – método addComentario()

Quando o usuário clica no link Admin da página inicial ele é redirecionado para a visão que mostra o formulário de login. O método da classe blog que realiza esta ação é:

index.php – método mostraLogin()

E o código fonte do arquivo login_view.php pode ser visualizado abaixo:

login_view.php

O método login da classe blog é responsável pela validação do usuário e por mostrar a visão de administração. Neste exemplo não é feito nenhuma validação específica, isso é deixado a cargo do leitor, podendo implementar algum método de autenticação que seja pertinente.

index.php – método login()

A visão de administração é a mais complexa de todas. Além de mostrar os posts já cadastrados na tabela ela fornece opções de exclusão e de alteração dos mesmos. Para melhorar a interação com o usuário é usado técnicas de AJAX para buscar os dados do post antes do usuário realizar a alteração.
O código do arquivo admin_view.php é mostrado abaixo, com seus comentários.

admin_view.php

Quando o usuário clica no link “Alterar” uma conexão assíncrona é aberta com o servidor via AJAX solicitando os dados do post. Os dados são codificados no formato JSON. JSON é “um formato leve para troca de informações. É facil para humanos lerem e escreverem. E é fácil para as máquinas processar e gerar.” Uma espécie de XML ligth. É baseado na notação de objetos do JavaScript, o que cai como uma luva para usar com o XMLHttpRequest. A classe blog utiliza o include JSON.php para gerar os dados neste formato. Este script pode ser encontrado no repositório PEAR, no endereço http://pear.php.net/pepr/pepr-proposal-show.php?id=198 e mais informações sobre o JSON podem ser encontrados no http://www.json.org.
Um exemplo da visão de administração é mostrado na figura abaixo:

img3.jpg
Abaixo é mostrado o código final da classe blog com todos os métodos comentados acima e os métodos restantes, addPost(), del(), altPost() e buscaPost().

index.php – arquivo final

Tenho usado estas classes em alguns novos projetos que estou desenvolvendo e o ganho de produtividade tem sido interessante. Se ajudar para alguém fica aí minha contribuição.

Bookmark and Share

41 Responses to “Miniframework PHP”


  1. 1Maurício M. Maia

    Legal cara! Ainda preciso olhar com mais calma, mas parece muito bom.

    Eu estou usando o Code Igniter e estou bem satisfeito, com ele o único problemas foi aprender uma nova sintaxe, mas a ótima documentação minimiza isso.

    Outra coisa frustrunte é não poder usar os recursos do php5, mas como os clientes não costumam ter suporte a ele, fica por isso mesmo… :/

    Ah! Você está usando algum lib pra AJAX?

    Abraços

  2. 2elm

    Legal que gostou. Ainda não sei se vou usar alguma lib para tratar a parte do AJAX. Acho q provavelmente vou somente colocar em um .js a parte
    function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == “Microsoft Internet Explorer”){
    ro = new ActiveXObject(“Microsoft.XMLHTTP”);
    }else{
    ro = new XMLHttpRequest();
    }
    return ro;
    }
    var http = createRequestObject();

    para não ter que digitar isso todas as vezes :-)

  3. 3mantovani

    Há algumas semanas, aqui na e-comBR venho pesquisando diversos frameworks, inclusive testando o: Symphony, Prado, Zend Framework, Seagull, CakePHP, e ainda experiementei desenvolver usando componentes PEAR entre outros…

    De todas as experiências feitas, posso assegurar que estou muito feliz com os resultados obtidos com o CakePHP, inclusive estamos atodando como padrão de desenvolvimento para nossos sistemas. O cake utiliza-se da estrutura MVC, e têm uma boa padronização e convenções para desenvolvimento, fácil uso de AJAX, dá pra usar com a Smarty, etc.

    Com relação ao este ‘mini’ framework, o que mais me chamou foi o fato de ele trabalhar o MVC de forma bastante ’simples’, e não ter que ‘carregar’ muita coisa ‘desnecessária’ junto para o ambiente de produção, ou seja, é enchuto.

    Legal o trabalho, e abraço ao amigo,
    Heber Mantovani
    e-comBR – Soluções em Tecnologia
    heberm at gmail dot com

  4. 4leandro

    Bah, cara… muito legal sua idéia.

    Não consegui olhar ela a fundo, só dei uma “espiada” no código. A algum tempo estou tentando achar algum framework para php, mas até agora não gostei de nenhum.

    Como você faz no caso de precisar fazer um select em duas tabelas no banco de dados?

  5. 5elm

    Opa. Funciona mais ou menos assim:

    $tab = new tabela(“pessoa,cidade”);
    $tab->get(array(“pessoa.nome”,”cidade.nomcid”), “pessoa.codcid = cidade.codcid”);
    while($tab->result()) {
    echo $tab->nome.”-”.$tab->nomcid;
    }
    Se não entender me avise
    t+

  6. 6leandro

    Entendi e não entendi….é que não olhei a fundo como funciona o seu código…. mas pode ficar tranquilo que agora vai me sobrar um tempo e vou estudar direitinho como funciona. Qualquer coisa te aviso.

    Ps: tava olhando agora o endereço do seu site…voce é de Chapeco? eu moro em Maravilha

  7. 7elm

    Sou de Chapecó mesmo.

  8. 8Rodrigo

    Excelente artigo! “MVC” simples e eficiente! Parabéns!

  9. 9Renato

    Olá, nessa linha “$blog = new blog(“mysql://root:@localhost/blog”);” você faz o seguinte comentário:

    “Como parâmetro para o construtor da classe é enviado a string de conexão com a base dados. Esta string é no formato usado pelo ADODB”.
    Eu sou novato nisso, procurei o arquivo onde coloco a string de conexão do banco de dados “localhost, root,senha” , mas não achei você pode me dá uma ajuda ?? Pois quero testar esse seu script.

    Obrigado

    Renato

  10. 10elm

    Vc deve alterar essa linha
    $blog = new blog(“mysql://root:@localhost/blog”);
    de acordo com suas configurações. Exemplo. Se a senha do usuário root for “linux” e o nome da base de dados for “teste”, ficaria desta maneira:
    $blog = new blog(“mysql://root:linux@localhost/teste”);
    O formato é
    tipo_de_banco://usuario:senha@servidor/banco
    traduzindo:
    mysql://root:linux@localhost/teste

    Espero ter ajudado

  11. 11Rafael Stoever

    Olá,
    Estava lendo sobre o seu artigo e achei mto interessante, parabens.

    Acabei tbm desenvolvendo um pequeno aplicativo para getter’s e setters com CRUD para as minhas aplicações, e agora que estou aprendendo a usar o MVC mais corretamente vejo que há mesmo mtos frameworks bons para isto, mas uma coisa que nao há eh um IDE boa para trabalhar com GTK-PHP para trabalhar legal com esse padrao MVC.
    FLW

  12. 12Arno Hubbe

    Caro Elton,

    Também sou catarinense, de Tubarão.
    Parabéns pela matéria sobre Miniframeworks. Graças a ela vou começar a programar em PHP.
    Fui testar o exemplo dado, e, ao abrir a página http://localhost/blog/view/index.php?op=mostraLogin , apareceram as seguinte mensagens de erro:

    Parse error: parse error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in C:\webserver\www\classes\app.php on line 14

    Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in C:\webserver\www\classes\tabela.php on line 18

    Fatal error: Class blog: Cannot inherit from undefined class app in C:\webserver\www\blog\view\index.php on line 6

    Podes me auxiliar a resolver este problema?

    Obrigado,

    Arno

  13. 13Elton Minetto

    Arno, esse código só funciona no PHP5. Será q não é esse o problema? Vc está testando em qual versão do PHP?

  14. 14Wagner

    Olá Elton, parabéns pela iniciativa de distribuir valorosas informações em teu blog. Te parabenizo tb pelo conhecimento demonstrado.
    Conheci alguns de teus trabalhos através do site Linha de Código.
    Tenho atuado mais fortemente no desenvolvimento e provimento de soluções “baixo-nível” (API, infra-estrutura, gerenciamento, comunicação, …) em sistemas de comunicação sem fio — mais especificamente, telefonia celular.
    Mas estou começando a desenvolver um trabalho que visa desenvolver um modelo modular (PHP, MySQL) que será usado para a criação de sites que necessitam trabalhar com “notícia”, “agenda”, “cadastro”, “galeria-imagem, som e vídeo”, “enquete”, “newsletter”, “promoção”. Também irei usar MVC e teu artigo está sendo bastante útil — ainda sou ‘beginner’ em PHP ;)
    Quero te fazer apenas uma pergunta: em termos comerciais, hj já é viável desenvolver sobre PHP 5? Vi que vários hospedeiros rodam PHP 4 ainda. Ainda não peguei informação se tais servidores rodam PHP 5 ‘em paralelo’. Grato pela atenção.

  15. 15elm

    Opa. As características que estão disponíveis na versão 5 do PHP são realmente muito boas. Vale a pena dedicar um estudo nelas, ainda mais se vc está começando agora com o PHP. Realmente não sei como está o mercado de hospedagem mas tenho a impressão que logo logo todas as empresas vão fornecer suporte ao PHP5. Pelo menos aqui na minha cidade, em SC, os provedores já migraram e amigos que trabalham lá garantem inclusive que eles tem vantagem pela segurança que o PHP5 provê. É o futuro

  16. 16Enrico

    Opa Elton,

    gostaria de usar a sua framework, e quem sabe até adicionar funcionalidades nela.

    Como é a distribuição de seu código ?

    []’s e parabéns! Ficou muito boa!

  17. 17elm

    Olá Enrico, legal que gostou.
    Quanto a distribuição, a licença é GPL, apesar de eu ter esquecido de colocar no código. Por enquanto vc pode copiar os códigos aqui
    http://www.linhadecodigo.com.br/artigos/downloads/eltonMinetto/framework.zip
    Eu não coloquei em um repositório como o sourceforge simplesmente pq achei q ninguém teria interesse. Eu só publiquei os códigos porque achei q seria útil como exemplo para alguém, apesar de eu estar usando em produção a mais de 6 meses. Se alguém tiver interesse de fazer alterações eu coloco em um repositório para facilitar.

  18. 18Diego Monteiro Medeiros de Araújo

    Gostei e já estou usando, estava construindo algo bem similar ao que você montou.
    Só adodb, ajax e separação de lógica e apresentação.
    Pretendo construir algo em escala maior e quem sabe enriquecer um pouco o trabalho com CSS

  19. 19Carlos da Silva

    Legal… mas o que é PHP?

  20. 20Nelson Pereira Júnior

    Muito bom Elton. Parabéns.

    Eu estudo licenças na faculdade, faço Desenvolvimento Web com Software Livre.

    Tenho uma sugestão humilde a fazer:

    Deveria mudar a licença do seu código, pois ninguém poderá usar seus ótimos códigos em seus websites a menos que estes estejam também sob a licença GPL. Dificilmente um site comercial usaria licença GPL. Isso invalida seus códigos para a grande maioria dos sites.

    A idéia de criar um mini framework, acredito que seja para agilizar a criação de sites em PHP. A grande maioria dos desenvolvedores que poderiam usar seus códigos, são desenvolvedores de pequenos e médios sites comerciais, muitos deles iniciantes, como vi nos posts. Coisas maiores não usaria um mini-framework, e se usassem, fariam uma base maior.

    Vc fez um ótimo trabalho nesse framework, mas definindo sua licença como GPL está proibindo aos desenvolvedores de usarem os seus códigos em sites comerciais que desenvolvem para seus clientes. Sugiro mudar a licença para que todos tenham livre uso. Assim vc conquistará muito mais desenvolvedores interessados, que acredito ter sido seu objetivo com esse trabalho.

    Se for mudar a licença, por favor, me envie um e-mail. Utilizarei seus códigos também.

    Abraços.

  21. 21elm

    Olá Nelson, obrigado pelos comentários.
    Gostei da sua sugestão. Estou em processo de colocar o framework como um projeto no sourceforge e tenho q escolher a licença definitiva. O que vc sugere? LGPL ou outra?

  22. 22Lucas Pacheco Teixeira

    Parabéns, Elton!
    O seu Miniframework PHP serviu de grande inspiração para um trabalho que pretendo realizar durante janeiro de 2007. Sou estudante de sistemas de informação da ufsc (sim… mais um catarinense na área! hehehe) e tenho feito um grande esforço no sentido de criar, dentro do meu curso, um grupo permanente de pesquisa e desenvolvimento web usando PHP. A decisão por PHP é justamente por se tratar de uma linguagem simples, batata (quando à hospedagem) e poderosa, ou seja, uma linguagem de fácil acesso que possibilita a criação de sistemas que vão desde os mais elementares aos mais complexos.
    Percebi que a última postagem aqui é de setembro de 2006. Gostaria de saber como anda o seu Miniframework PHP hoje e como têm evoluído as suas pesquisas nessa área e se está disposto a trocar algumas idéias sobre o assunto (por voip ou email).
    Por enquanto, um grande abraço e parabéns mais uma vez pela iniciativa!

  23. 23elm

    Olá Lucas.
    Legal que vc gostou do framework.
    Ele está em produção a alguns meses aqui na Unochapecó, onde trabalho. Os desenvolvedores estão gostando dele e da produtividade que ele fornece.
    Eu não coloquei mais nada sobre ele no meu site por falta de tempo, mas criei um projeto no sourceforge e estou usando o CVS de lá para armazenar os códigos. Vc pode ver as alterações no endereço http://slimphp.cvs.sourceforge.net/slimphp/ (slimPHP é o nome que eu dei para o projeto, por falta de idéia melhor). Ele evoluiu um pouco desde a versão que está no meu site.
    Quanto ao PHP, eu só posso te dar a maior força. É muito bom mesmo. Aqui em Chapecó já podemos nos considerar um “polo” de desenvolvimento PHP. Temos várias empresas e desenvolvedores trabalhando com a linguagem. Inclusive ensino PHP no curso de sistemas de informação.
    No que eu puder ajudar estou a disposição. É mais fácil me achar por e-mail ou Gtalk.
    Blz?
    t+

  24. 24RT61wimyo7

    Hi! Very nice site! Thanks you very much! y0Yqjb0Gf4Ep

  25. 25eduardo

    parabéns excelente msm …

    mais tenho uma duvida meu host usa php 4 e no arquivo app.php ele reclama como resolver ?

  26. 26elm

    Olá Eduardo, infelizmente só funciona no PHP5. Eu desenvolvi usando todas as características da OO do PHP5 e nunca tive tempo de migrar isso para o 4.

  27. 27David

    Olá Elton, desculpe a ignorância, é que estou começando a pesquisar agora sobre o assunto e acabei achando sua página.
    Estou pensando em colocar em um sevidor um sistema fácil para as pessoas criarem suas home pages, no meu caso seriam professores de várias áreas, então teria que ser o mais fácil possível, como a criação de um blog.
    Para um sistema desses teria q usar algum tipo de framework? Vc conhece algum sistema que faça isso?
    Obrigado e parabéns pelo código!!!

  28. 28elm

    Olá David. Você poderia desenvolver um sistema como este usando algum framework, mas na minha opinião estaria “reinventando a roda”. Existem excelentes ferramentas como o wordpress (www.wordpress.org) ou o Drupal que vc poderia usar. Eu tentaria usar uma destas ferramentas e se elas não se encaixarem nas suas necessidades aí tentaria desenvolver ou customizar algo.
    Espero ter ajudado

  29. 29Raphael

    Elton, gostaria de saber se você já tem alguma coisa feita em cima desse código referente a paginação, se tiver poderia disponibilizar?
    Agradeço desde já e parabéns pelo código, eu já conhecia a um tempo e nessa última semana precisei começar a fazer um site e estou utilizando seu framework. Só me faltava mesmo uma paginação.
    Abraços.

  30. 30elm

    Raphael, blz?
    Estamos desenvolvendo esta parte do framework. Já temos alguns exemplos funcionando mas ainda está dando problemas. Assim que conseguirmos corrigir vamos disponibilizar aqui no site e no slimphp.sourceforge.net

  31. 31Raphael

    Elton, agradeço pela atenção e estarei atento para assim que surgir essa nova feature estar me atualizando.
    Enquanto isso vou desenvolver algo simples aqui, apenas para ir para o próximo e anterior, sem a opção de ir para uma página específica na paginação.
    Tenho algo em mente e vou ver se desenvolvo hoje de noite. De repente o que estou pensando posso agregar na sua classe ou então colocar na action mesmo.
    Bom dependendo do código que sair eu te envio, caso seja de interesse, para tu dar uma analisada.
    Abraços

  32. 32Raphael

    Elton, gostaria de usar o framework acessando a base de dados postgresql.
    Tem como eu fazer isso?
    Como eu faria?
    Valeu
    Abraços

  33. 33elm

    Raphael, seria só alterar o arquivo index.php e colocar na última linha algo como:
    $blog = new blog(“postgres://user:pwd@localhost/mydb?persist”);

  34. 34Raphael

    Elton,
    muito obrigado pela ajuda sobre o postgre.
    Pena que não poderei usar nesse projetinho que estou fazendo, pois o server que o cara escolheu não da suporte a postgre.
    Mas estarei utilizando em outro que irei fazer assim que terminar esse.
    []’s

  35. 35Raphael

    Elton, estou usando seu miniframework para desenvolver um site (www.joaoayres.com) porém encontrei um erro muito estranho no IE.
    Quando acesso o endereço http://www.joaoayres.com/site/index.php?op=poemas e tento abrir um link que é gerado por essa página o Firefox abre normalmente, mas o IE não abre, o que ele faz é abrir uma janela para fazer download do arquivo index.php
    Gostaria de saber se você já teve esse erro e se possível me ajudar com o mesmo.
    Agradeço desde já.

  36. 36Raphael

    Elton,
    já solucionei o problema.
    Mesmo assim muito obrigado.
    Abraços

  37. 37Ricardo

    Quando eu copio e colo um texto, para criar um post…salvo, Ateh ai blz….
    mas depois k eu quero alterar o texto, no campo aparece uns numeros juntos.

    Ex.:
    A cantora estava aparentemente nervosa, mas cumpriu a coreografia – tambm0020sem muitas peripc0069as. Ela foi levantada por bailarinos apenas uma vez durante a ms006900630061.

    (obs: Texto original:
    A cantora estava aparentemente nervosa, mas cumpriu a coreografia – também sem muitas peripécias. Ela foi levantada por bailarinos apenas uma vez durante a música.
    )

    Como que arruma isso ??
    (Acho que o problema éh quando envia o valor para o campo, mas não tenho ideia de como arrumar)

    Att
    Ricardo

  38. 38elm

    Ricardo, aparentemente isso é problema com a codificação dos dados. Tenta usar os comandos utf8_encode/utf8_decode do PHP para ver se resolve. Vou tentar fazer uns testes aqui e se eu conseguir resolver te aviso

  39. 39Ribamar FS

    Olá Elton!

    Embora esteja gostando muito do Zend Framework, só o fato do seu projeto falar em simplificar para mim já é um atrativo.
    Admiro seu trabalho em divulgar e compartilhar seus conhecimentos com a comunidade.

    Baixei o slimpphp mas sua compatibilidade atual é com sistema de arquivos linux (nos includes).
    Seria interessante atingir usuários windows, que são muitos, pelo menos para testes.

    Uma rotina que uso e que compatibilida é:

    function path_absoluto()
    {
    /* Crédito: http://code.anjanesh.net/2007/05/absolute-path-of-current-php-file-in.html */
    $d = debug_backtrace();
    $Filename = $d[0]['file'];

    switch (PHP_OS)
    {
    case “WINNT”: $needle = “\\”; break;
    case “Linux”: $needle = “/”; break;
    default: $needle = “/”; break; // TODO : Mac check
    }
    $AbsPath = substr($Filename, 0, strrpos($Filename, $needle)).DIRECTORY_SEPARATOR;
    return $AbsPath;
    }

    Nos includes uso assim: include_once(path_absoluto().”..”.DIRECTORY_SEPARATOR.”includes”.DIRECTORY_SEPARATOR.”arquivos.php”);

    Grato pela sua idéia, mais ainda, pela sua generosidade e iniciativa e Feliz Natal.

  40. 40elm

    Ribamar, obrigago pela sugestão. Muito útil mesmo.
    Vou colocar na próxima versão do framework.

  1. [...] Seguindo a idéia do meu Miniframework PHP criei o Miniframework AJAX. Não tem nada de complexo, a idéia e “escrever menos código sem ter que aprender muita coisa nova”. [...]

Leave a Reply