Laravel, o framework PHP que me fez voltar a gostar de programar

VN:RO [1.9.11_1134]
quinta-feira, 6 d março d 2014
Por Eduardo Russo, Coop10. Siga no Twitter

No meu segundo estágio do COOP, usei alguns frameworks Java que mais atrapalhavam do que ajudavam…

Depois, trabalhando na Fábrica de Aplicativos, não cheguei a programar, mas vi o sofrimento dos meus colegas com outro framework (que não merece um link).

Isso me causou um probleminha com frameworks… com algumas discussões acaloradas com o pessoal do Kauplus e da Plataformatec (sim, esse post tem bastante jabá) sobre Rails.

Tendo isso embuído em meu ser, quando decidi fazer meu conversor de canal de YouTube para podcast, nem pensei em usar framework… fiz tudo em PHP puro! Like a boss!

Porém, quando chegou o momento de crescer, de ter ACL, código organizável, evitar SQL Injection etc., cheguei à conclusão de que teria que partir pra um framework pra não ficar maluco cuidando de cada um desses detalhes manualmente.

Fiz uma vasta pesquisa de frameworks MVC para PHP. Meu foco eram frameworks rápidos, modernos, com uma baixa curva de aprendizado e que pudessem ser extendidos.

Cheguei a três possibilidades: Yii, Codeigniter e Laravel. Na epoca, não encontrei o tal Phalcon, que, diferente dos outros frameworks, escritos em PHP, é escrito em C e roda como uma extensão do PHP. Fiz alguns testes bem rápidos (bem mais tarde), mas não fiz nada completo com ele.

Comparativo de requisições por segundo de alguns frameworks PHP

Comparativo de requisições por segundo de alguns frameworks PHP

Não testei o Slim nem o Silex por serem microframeworks e, por algum motivo, o Kohana não me pareceu uma boa… sinceramente, não lembro o que.

Yii

Como já havia feito um trabalho na faculdade usando o Yii, o escolhi para começar os testes… logo de cara, não gostei da forma automágica de criação de tabelas do banco de dados.

Tenho uma visão de que o banco de dados é a parte mais importante em relação a desempenho e qualidade do seu software. Um banco de dados com tabelas demais e dependências demais, totalmente baseada no seu modelo de modelos sempre me pareceu algo errado e que vai te dar muita dor de cabeça no futuro.

Codeigniter

Após desistir do Yii, parti para o Codeigniter. Logo de cara, me deparei com um framework relativamente simples de se entender, mas totalmente dependente de módulos externos.

Para criar meus usuários, tive que instalar um módulo de ACL… e isso me desagradou.

Queria um framework que funcionasse para coisas simples out of the box, sem depender de pesquisar e instalar módulos para coisas simples como controle de acesso.

Laravel

Logo de início, gostei da documentação e da abordagem simples… consegui fazer bem rapidamente o que queria e, atualmente é meu framework padrão para projetos novos.

O Tubelivery foi feito usando o Laravel 3… não quis usar o 4 pois ainda estava em beta.

Logo depois, utilizei o 4 em um hackaton… tive que me adaptar a algumas mudanças, mas nada de outro mundo…

Finalmente, fiz um projeto mais completo e complexo, o Faviconit, uma ferramenta para criação de favicons, Apple touch icons e umas coisinhas a mais. Foi aí que realmente usei o framework de forma mais intensa e entendi mais profundamente seu funcionamento.

A seguir, o que me fez gostar tanto do framework… sei que muita coisa é básica de qualquer framework moderno:

Composer

O Laravel 4 utiliza o Composer para gestão de pacotes… algo que praticamente todo framework moderno de PHP usa (ou deveria usar).

Cada pacote do Composer pode depender de outros pacotes de Composer… mas você não precisa se preocupar com isso, já que, se no pacote vier um outro JSON com as dependências, os arquivo são baixados e instalados automaticamente, O próprio Laravel é totalmente modular, usando, por exemplo, a classe de gestão de HTTP do Symphony.

Instalar um novo pacote, uma nova dependência depende de uma linha de código no JSON do Composer e mais uma na classe que gerencia as dependências do Laravel (opcional, apenas para não ser obrigado a digitar o caminho completo das classes do Pacote).

Rotas

A gestão de rotas é bastante simples, e coisas que eu desconhecia (nano deveria, mas desconhecia) como filtros, before e after são extremamente simples de serem feitas.

O framework vem de fábrica pronto para gerar rotas REST e é extremamente simples fazer isso… toda rota pode e deve ser possível de ser acessada em qualquer nível.

No Faviconit, por exemplo, tenho uma página de download dos arquivos que tem um hash em sua URL. Porém, pelos princípios REST, eu devo poder remover esse hash e a página tem que ser acessível, sem me jogar um erro 404 na cara. Fazer isso com Laravel é extremamente simples.

Route::controller('download/{folder?}', 'DownloadController');

Quando adiciono esse {folder?}, isso é colocado como opcional e basta eu lidar com essa possibilidade no meu controller.

MVC redondo

O MVC do Laravel é bem organizado sem ser engessado.

É muito fácil criar uma aplicação usando apenas as pastas Model, View e Controller, porém, extremamente simples, também, criar novas pastas e módulos…

Criei, por exemplo, uma pasta Helper, onde adicionei algumas classes de edição de imagens, necessária para gerar os favicons nos tamanhos corretos. Bastou inserir essa pasta no Autoloader do Laravel para que todos os arquivos lá dentro fossem reconhecidos.

CLI bacanudo

O Laravel vem com um CLI bem poderoso e extensível, o Artisan.

De “fábrica”, já vem com comandos para a criação de migration, de filas, de controllers , de novos comandos pro Artisan etc.

Criar novos comandos é bastante simples e, usando o próprio Artisan, você cria um novo arquivo já poupado, pronto para ser preenchido.

No Faviconit, como preciso utilizar o Imagemagick para converter imagens, criar um novo comando do Artisan foi a maneira mais simples de acessar a ferramenta via terminal. Fazer isso foi extremamente simples e funcional.

Lista de comandos do Artisan. Em destaque, os comandos criados por mim

Lista de comandos do Artisan. Em destaque, os comandos criados por mim

Além disso, é possível instalar pacotes via Composer que aumentam ainda mais a produtividade com o Artisan.

Blade

Outra coisa que me agradou muito foi a ferramenta de templates, o Blade.

O grande objetivo é reduzir a quantidade de código PHP inserido no meio do HTML e aumentar o reúso.

Em vez de usar a tag “<?php echo $myVar ?>”, basta colocar um “{{ $myVar }}”, o que facilita muito a convivência com designers, que enxergam mais claramente o que é código e o que não é.

Em relação ao reúso, uso um “base.php” onde, simplificandamente, defino qual template será usado no header, um espaço para o conte;duo principal e mais um template para o footer.

Quando defino uma view, digo que ela usará o template “base” e coloco qual o conteúdo. Dessa maneira, consigo definir uma estrutura básica para todas as páginas e apenas preciso alterar o conteúdo principal.

Organização das pastas das Views

Eloquent ORM

O Eloquent é um ORM bastante parrudo e bem ligado ao framework. Após definir que uma classe está ligada a uma determinada tabela, você^precisa fazer… nada… todos os getters e setters funcionam magicamente, aproveitando da natureza dinâmica do PHP.

Não gosta de lidar com ORMs… quer escrever queries na unha… o Eloquent permite, possuindo três níveis de encapsulamento. Um completamente orientado a objeto, um intermediário e um totalmente baseado em queries.

Pessoalmente, alterno bastante entre os três modos, dependendo da complexidade do que preciso encontrar.

Se preciso de um objeto e suas relações, uso o método totalmente OO com uma busca eager… Preciso de um relacionamento complexo, cheio de joins… faço uma query…

Validação

O framework já vem com zilhões de validações prontas, com o texto de erro facilmente editável.

Além disso, é extremamente fácil criar seus próprios validadores.

No caso do Faviconit, tive que criar uma classe para validar se uma imagem era quadrada e se tinha a dimensão mínima:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
 
class ImageValidator extends IlluminateValidationValidator
{
    public function validateSquaredImage($attribute, $value, $parameters)
    {
        if (Input::get($attribute) != '') {
            return ImageHelper::imageIsSquared(Input::get($attribute));
        } else {
            return ImageHelper::imageIsSquared($value);
        }
        Log::error('$value or attribute not set');
 
        return false;
 
    }
 
    public function validateMinimumSizeImage($attribute, $value, $parameters)
    {
        if (Input::get($attribute) != '') {
            return ImageHelper::imageIsBiggerHasTheNeededSize(Input::get($attribute));
        } else {
            return ImageHelper::imageIsBiggerHasTheNeededSize($value);
        }
        Log::error('$value or attribute not set');
 
        return false;
 
    }
}

Depois de criar o validador, basta adicioná-lo no array de regras, junto dos validadores já existentes.

$rules = array(
            'iconName'    => 'max:64|regex:/^[a-zA-Z0-9.-_]*$/',
            'iconVersion' => 'max:6|regex:/^[a-zA-Z0-9.-_]*$/',
            'iconImage'   => 'required|image|squaredImage|minimumSizeImage'
        );

Métodos Estáticos

Método estático foi algo que entendi pra que serve com o Laravel. As classes do framework tem métodos “normais”, mas ele se utiliza o tempo todo de Façades para “estaticar” seus métodos. Muitos criticam isso pela sua “intestabilidade”… mas, sinceramente, na hora de escrever o código, me ajuda muito escrever:

return Response::json(json_encode($return), 200);

Em vez de:

$response = new Response();
return $response->json(json_encode($return), 200);

No fim do dia, você economizou algumas horinhas de código escrito e mais algumas de debug.

Em relação à “testabilidade”, o Laravel é totalmente testado com o PHPUnit e já vem com uma pasta pronta para você criar seus testes… então, uso sem dó os métodos estáticos!

Documentação

Apesar de não ser completa, a documentação ensina o básico para você começar e se aprofunda um pouco em detalhes mais hardcore.

Além disso, o framework é todo comentado com PHPDoc e no próprio site é possível encontrar todas as APIs… então, se realmente quer conhecê-lo a fundo, é fácil encontrar.

Comunidade

Um dos grandes aspectos que fez do Ruby ser o que é é o engajamento da comunidade e o Laravel segue por esse caminho.

Se, por um lado PHP é uma grande zona… considerado por muitos uma linguagem tosca, que serve para o sobrinho fazer o site da papelaria da esquina, por outro lado é a linguagem usada num dos sites mais acessados do planeta… um tal de Facebook (sem link pra eles… eles tem acesso demais).

Por ser um framework relativamente novo, o Laravel busca limpar essa sujeira do nome do PHP, com uma comunidade engajada em fazer bem feito e da maneira mais “correta” possível, estando totalmente enquadrado nas definições do PHP-FIG,  um grupo criado pelos gestores de vários frameworks PHP, buscando unificar a forma de se escrever código, ditando algumas regras essenciais como o autoloading.

Conseguir ajuda para resolver problemas, maneiras de escrever melhor seu código, organização etc. são rapidamente respondidas pela comunidade… e isso ajuda muito quem está começando.

Concluindo…

Se está buscando um framework para começar um projeto… recomendo dar uma olhada no Laravel…

Deixei algo passar… deixe uma mensagem pra conversarmos!

VN:F [1.9.11_1134]
Rating: 4.5/5 (28 votes cast)
Laravel, o framework PHP que me fez voltar a gostar de programar, 4.5 out of 5 based on 28 ratings
Related Posts with Thumbnails

Eduardo Russo
Eduardo Russo

Formado em Engenharia de Computação pela Poli (2010) e em Design pela Belas Artes (2001), cofundador do Bit a Bit, fundador do Tubelivery e do Faviconit, cofundador da Fábrica de Aplicativos e coordenador de produto do Scup.

34 Comentários para “Laravel, o framework PHP que me fez voltar a gostar de programar”

  1. Jammeron

    Muito bom Eduardo, já uso o Laravel e fico mais encorajado ainda a usar. Parabéns pelo artigo

    VA:F [1.9.11_1134]
    Rating: +3 (from 3 votes)
    #1211
  2. Nei

    Cara, este post esclareceu bastante coisa…
    Estou o dia todo analisando frameworks, desempenho, estilo de código, apoio da comunidade, curva de aprendizado, etc…
    Fiquei entre estes:
    CodeIgniter (mas desanimei quando li que seu futuro incerto)
    Yii,
    Laravel,
    Phalcon.

    Não vejo muita gente falando do Phalcon, embora ele tenha uma ótima documentação com bons exemplos de uso, e lidera nos benchmarks entre os frameworks supracitados…

    Enfim, ainda estou em dúvida, mas pendendo para o Laravel ou Phalcon.

    VA:F [1.9.11_1134]
    Rating: +1 (from 1 vote)
    #1218
    • O Phalcon é relativamente novo e o fato de ser escrito em C (e, portanto, dificultar bastante a alteração do framework caso necessário) e de ser instalado como uma extensão de PHP (é um .so) provavelmente o deixa de fora da grande maioria dos hosts compartilhados… e isso pode ser uma complicação para sua popularização.

      O Laravel tem crescido muito e é relativamente fácil encontrar e conseguir ajuda. É interessante o fato de ainda ser totalmente controlado pelo seu criador. Isso traz um maior controle da qualidade, porém corre-se o risco de coisas essenciais ficarem de fora por gosto pessoal. Esse framework tem sido minha escolha padrão para novos projetos.

      Acho que a grande questão aqui é a necessidade de velocidade. Diria que, para um sistema “normal”, o Laravel tem vantagens pelo suporte, por estar mais maduro e, ao meu ver, por ser bem mais fácil de começar. Caso você realmente tenha necessidade de velocidade, o Phalcon acaba sendo uma opção mais atrativa, por ter uma velocidade praticamente de PHP puro, com pouco overhead do framework.

      VN:F [1.9.11_1134]
      Rating: +1 (from 3 votes)
      #1220
      • Nei

        Depois desse comentário, eu entrei de cabeça no Laravel pra testar ele antes do Phalcon e estou me surpreendendo com ele.
        Não gosto de ficar instanciando classes e com ele não preciso mais disso, já que as classes são estáticas e podemos usar em qualquer parte do projeto graças ao autoload :)
        Mas não tô achando conteúdo fácil não…
        A comunidade ainda não se encontrou, e tem gente espalhada no google groups, g+, face e laravel.com.br.
        O povo do laravel.com.br fala que é pra postarem lá pra unificar, aí criaram um forum.laravel.com.br, mas quando vc vai postar la, diz que vc precisa postar agora no duvidas.laravel.com.br.
        Por enquanto, estão se estruturando e tô tendo dificuldade de ver conteúdo principalmente pro laravel 4, já que a excelente série do Laravel 3 no site brasileiro não tem previsão de update pro 4, e pelo que percebi mudou bastante coisa…

        Pode indicar boas fontes pra quem está começando?

        Abraço e parabéns pelo post.

        VA:F [1.9.11_1134]
        Rating: 0 (from 2 votes)
        #1232
  3. Parabéns pelo ótimo post, Russo!

    VN:F [1.9.11_1134]
    Rating: +1 (from 3 votes)
    #1231
  4. Denner Fernandes

    Estou a certo tempo aprendendo o PhalconPHP, mas quero conhecer o Laravel também.
    Gostaria de fazer uma pergunta sobre ele:

    Por ser ‘todo estaticável’ não pesa a aplicação?

    Pergunto pois a um tempo atrás fiz uma aplicação para ler e criar CNAB’s fazendo ponte entre dois ERP’s daqui da empresa usando o Codeigniter. Coloquei os models todos no autoload. Conclusão ficou uma carroça!!! Poucos usuarios podiam acessar ao mesmo tempo.
    Corri para fazer uma versão 2.0 e colocar os loads dos models somente onde eram necessários. Aproveitei e testei matar os objetos e tive uma melhora significativa.

    No Lavarel, se entendi bem, se instancia as classes no autoload? Ou seja, se visito uma página de cadastro, que no máximo iria precisar de umas 3 classes, o framework lota a memória com todas as outras?

    Agradeço a atenção!!!

    VA:F [1.9.11_1134]
    Rating: -1 (from 1 vote)
    #1269
    • Em relação ao Phalcon, qq framework vai ter o overhead imenso, já que o Phalcon é escrito em C… portanto é praticamente rodar PHP puro.. mas ele tem algumas desvantagens que me fizeram acabar fugindo dele, como documentação, e debug do framework… de tiver algum problema no Phalcon, vc precisará editar código em C, compilar e atualizar o .SO, o que é meio complicado…

      Voltando ao Laravel, pelos benchmarks que analisei na epoca em que estava escolhendo um, ele é um dos mais rápidos, mesmo com os façades que o deixam mais “estático”.

      Pelo que entendo, o Autoload não carrega tudo na memória não… isso pode ser um problema do Codeigniter. Nunca cheguei a ter uma aplicação com muitos usuários ao mesmo tempo para poder te responder com propriedade, mas não me parece que o Laravel irá arriar com muitos usuários.

      Valeu pelo comentário!

      VN:F [1.9.11_1134]
      Rating: 0 (from 2 votes)
      #1270
      • Denner Fernandes

        Boa tarde Eduardo.
        Obrigado pro responder.

        Sobre o Phalcon, concordo que o DEBUG é um problema, mas a documentação é maravilhosa!!!
        O que é outro ponto negativo é a comunidade: ainda não está formada. Sempre tenho que entrar em foruns da Indonésia; maior comunidade ativa.

        Sobre o Laravel, achei o ToDoVel. Vou segui-lo e ver o que o Laravel oferece.

        Valeu!!!

        VA:F [1.9.11_1134]
        Rating: -1 (from 1 vote)
        #1271
        • Vc tem razão… a comunidade que ainda é bem restrita… a documentação é decente mesmo!

          Não conhecia esse ToDoVel… vou dar uma olhada.

          VN:F [1.9.11_1134]
          Rating: -1 (from 1 vote)
          #1272
        • Gilvan

          Denner, boa tarde.

          Vi que você está trabalhando com Phalcon a algum tempo e como é sabido, a comunidade é bem pulverizada.

          Bem, quero saber se tem como me dar uma ajudinha pois, apesar de ter grande experiência com desenvolvimento, tenho muito pouca com Frameworks e após ler bastante decidi iniciar pelo Phalcon, principalmente, devido a seu desempenho.

          Enfim, entra em contato comigo se tiver um tempo.

          Muito obrigado desde já.

          br.gilvan@gmail.com

          ————————————————

          Eduardo, a você aproveito para parabenizar pelo excelente post.

          Abraço.

          VA:F [1.9.11_1134]
          Rating: -1 (from 1 vote)
          #1281
  5. Renato

    Não conhecia este framework, parece ser muito bom mesmo. Ultimamente tenho usado o CodeIgniter para meus projetos.

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1273
  6. Junior

    Olá. E o Zend Framework. Você já usou? Tem algo contra?

    VA:F [1.9.11_1134]
    Rating: -1 (from 1 vote)
    #1277
    • Não usei. O que sei dele é que é um framework bem robusto (para projhetos que exigem alto grau de complexidade), porém meio “pesado”. Se estiver precisando de algo assim, recomendo ir mais pro lado do Symfony 2.

      VN:F [1.9.11_1134]
      Rating: -1 (from 1 vote)
      #1278
  7. Roberto

    Utilizo o Laravel deste a versão 3!
    Tenho inúmeros livros (todos em inglês) e acompanho praticamente todos os vídeos do Laracast.com (ótima fonte de estudos para quem entende bem inglês! E lá ensina várias coisas que não se aplicam somente a Laravel – ex: boas práticas de programação, IoC, Bower, PHPUnit, etc).

    Havia saído do CodeIgniter e migrado para o Laravel, porém, só tinha utilizado em projetos pequenos.
    Uma coisa que me incomoda muito no Laravel é sua performance. Apesar de ser um excelente framework, e te fazer seguir boas práticas de programação, seu desempenho é péssimo (um dos frameworks PHP mais lentos segundo alguns benchmark – não sei que ponto estes benchmarks são confiáveis), principalmente para sites bem movimentados.
    Benchmarks: https://www.techempower.com/benchmarks/#section=data-r9&hw=peak&test=json&b=1&s=2&l=sg&c=1 (já filtrado para frameworks PHP)!

    Surgiu um projeto para desenvolver, e já de inicio, estamos preocupados com desempenho! Vai haver uma carga bem grande de usuários diários e acesso simultâneos.

    Como mencionei, não confio totalmente em benchmarks de outros sites, eu mesmo resolvi fazer meus testes, entre o Laravel 4.2 com PHP 5.6 OPCache, Laravel 4.2 com PHP 5.6 e HHVM, Laravel 5.0 (ainda em Beta) somente com PHP 5.6 OPCache (não fiz com o HHVM porque nem sei se funciona, e realmente não valia a pena… leia os resultados), e por último, o Phalcon 1.3! Todos rodando em um servidor virtual Debian (Vagrant) com o nginx (faz tempo que não utilizo apache)!

    Meus testes consistiam em coisas simples que sei que usaria nesse novo projeto:
    - Retornar uma página estática (para deixar o mais simples possível, somente um hello world, sem template engine);
    - Inserir e excluir 1 registro no banco de dados (por requisição);
    - Recuperar vários registros do banco de dados (recuperar 50 registros por requisição);

    O banco de dados foi o MySQL mesmo (o objetivo é avaliar o framework e não o banco de dados), e na etapa de recuperar vários registros, como isso seria repetido diversas vezes, utilizei o sistema de cache do Laravel com o Redis (mesma coisa com o Phalcon)!
    Não vou entrar em detalhes da programação nem nada disso, o objetivo nem é esse aqui! Para isso, acho q o site que eu listei e muitas outras fontes sejam confiáveis o suficiente para isso!

    Os resultados (utilizando o apache benchmark com 30 conexões concorrentes e 500 conexões – um número meio alto para nosso objetivo, mas fica mais fácil de identificar o desempenho):
    Laravel 4.2 com PHP 5.6 OPCache:
    -> Hello World: 10.55 requests por segundo;
    -> Insert: 5.19 requests por segundo;
    -> Select: 2.73 requests por segundo;
    Resultado: não é tão devagar, se levar em consideração que são 500 requisições ai, porém, não é aquela maravilha também.

    Laravel 4.2 com HHVM:
    -> Hello World: 40.86 requests por segundo;
    -> Insert: 21.61 requests por segundo;
    -> Select: 16.56 requests por segundo;
    Resultado: se quer ter desempenho no Laravel 4.2, recomendo muito utilizar o HHVM! O desempenho melhorou cerca de 6x no select sem nenhuma modificação no código fonte

    Laravel 5.0 com PHP 5.6 OPCache:
    -> Hello World: 5.91 requests por segundo;
    Resultado: não fiz nem os outros testes! O resultado apresentado foi bem ruim, e provavelmente porque ainda está em fase beta, então não seria justo fazer um benchmark do restante;

    Phalcon 1.3 com PHP 5.6 OPCache:
    -> Hello World: 206.69 requests por segundo;
    -> Insert: 103.97 requests por segundo;
    -> Select: 105.56 requests por segundo;
    Resultado: um desempenho bem superior, devido a ser um framework em C (extensão PHP)!

    Considerações:
    Se você está procurando desenvolver um sistema web básico, em que o desempenho não seja tão crítico, vai de Laravel! Um sistema de médio porte, Laravel também! É um excelente framework e vou continuar usando para vários projetos de pequeno e médio porte!
    Agora, se quer desempenho, esqueça o Laravel! Sério! Todos os sites em que via benchmark de frameworks PHP, o Laravel só não perdia para o Symfony (e olha que o Laravel usa o Symfony por trás), porém, como todos esses sites não mostravam a versão do Laravel utilizada, eu mesmo resolvi fazer os meus testes (e nenhum mostrava benchmark com o HHVM)!

    Agora, as desvantagens do Phalcon apresentadas pelo autor em algumas respostas:
    - “O Phalcon é relativamente novo e o fato de ser escrito em C (e, portanto, dificultar bastante a alteração do framework caso necessário) e de ser instalado como uma extensão de PHP (é um .so) provavelmente o deixa de fora da grande maioria dos hosts compartilhados… e isso pode ser uma complicação para sua popularização”
    Bom, se você está procurando desempenho, nunca que vai utilizar um host compartilhado!
    Agora, em relação a alteração do framework! Sério? Eu pelo menos, se encontro algum bug em algum framework, eu tento contornar esse bug por fora, e envio um issue! Se eu modificar diretamente o framework, e quando sair uma nova versão, corro o risco de meu sistema não funcionar mais com uma nova atualização desse framework! (Todos esses anos trabalhando com Laravel e Java, nunca modifiquei nada de nenhum framework, e olha que já encontrei vários bugs)!

    - Debug do framework (Phalcon): confesso que conheço bem a linguagem C, porém, nunca precisei olhar o código fonte para entender algum recursos! A documentação é bem completa! Assim como no Laravel, que olhei o código fonte somente na versão 3! Na versão 4, nunca precisei olhar nada do código fonte pelo tanto de material disponível e documentação clara (a documentação do Laravel é excelente, a do Phalcon é muito extensa e dificulta um pouco achar algumas coisas! Deveria haver uma separação maior de tópicos para facilitar os novatos).

    Enfim, é isso!
    []s!

    Espero ter contribuído para quem estava em dúvida entre Laravel e Phalcon!
    Resumo:
    Projeto pequeno e médio focado mais em funcionalidades: Laravel
    Projeto grande em que o desempenho é crucial: Vai de Phalcon ou outro framework! O Laravel é um dos mais lentos entre todos os frameworks atuais (porem compensa pela enorme quantidade de funcionalidades e excelente documentação).

    PS: Escolhemos o Phalcon pelo desempenho, sua maior flexibilidade na estrutura de diretórios (vai haver um backend com angularjs, frontend, e uma api para o sistema mobile – acredito que o Laravel ficaria um pouco confuso tudo isso junto)! Eu particularmente preferia ir com outra linguagem sem ser PHP, porém, era um dos requisitos do projeto o desenvolvimento em PHP.

    VA:F [1.9.11_1134]
    Rating: +2 (from 4 votes)
    #1286
    • Roberto

      PS: Tanto os testes com o Phalcon como com o Laravel, o compartilhamento de pastas da VM estava desligada (sei que o compartilhamento de pastas do VirtualBox prejudica em muito o desempenho do Laravel)!

      VA:F [1.9.11_1134]
      Rating: -1 (from 1 vote)
      #1287
    • Roberto

      Ops!
      Teve uma “pequena” falha nesses testes, o que acaba invalidando esses numeros!
      O XDebug estava ligado durante os testes, e como o overhead do laravel é bem maior que do Phalcon, ficou uma disputa meio injusta!
      Então segue os numeros atualizados (melhora considerável em todos os testes, e uma duvida em relação a utilização de HHVM):

      Laravel 4.2 + PHP OPCache:
      -> Hello World: 54.64 [#/sec]
      -> Insert: 40.36 [#/sec]
      -> Select: 37.46 [#/sec]

      Laravel 4.2 + HHVM:
      -> Hello World: 64.10 [#/sec] (+17%)
      -> Insert: 33.35 [#/sec] (-17%)
      -> Select: 27.47 [#/sec] (-26%)

      Laravel 5.0 + PHP OPCache:
      -> Hello World: 60.53 [#/sec] (+10%)

      Laravel 5.0 + HHVM:
      -> Hello World: 108.52 [#/sec] (+98%)

      Phalcon + PHP OPCache:
      -> Hello World: 325.78 [#/sec] (+496%)
      -> Insert: 325.12 [#/sec] (+705%)
      -> Select: 326.15 [#/sec] (+770%)

      Considerações:
      - No Laravel 4.2, a utilização do HHVM teve uma pequena melhora em conteúdo estático, mas em acesso a banco de dados houve um desempenho inferior. Realmente não sei o porque disso. Como nunca utilizei o HHVM em produção, não posso opinar.
      Então, retiro o que disse anteriormente sobre a utilização do HHVM, principalmente em produção. Talvez com testes mais reais (processamento de volume de dados em PHP ou algo do genero, o HHVM teria um desempenho melhor), porém, não sei se o Laravel é 100% compatível com a última versão do HHVM. Os números apresentados são bons, ainda mais se levar em consideração que está rodando em um servidor virtual.

      - O Laravel 5.0, ao contrário do teste anterior, teve um desempenho bem semelhante ao Laravel 4.2, com exceção da utilização do HHVM, porém, no mesmo caso do Laravel 4.2, dúvido que o HHVM seja 100% compatível com o Laravel 5.0.

      - O Phalcon melhorou muito nas operações de banco de dados, e como sempre, tem um desempenho bem superior, mas mesmo assim não o utilizaria para tudo! Continuo dando preferência para o Laravel, ainda mais com esses novos números. O Phalcon me permite maior flexibilidade na estrutura de diretórios e posso fazer algo mais simples para um serviço REST por exemplo. (Não vejo motivo para utilizar o Laravel para um serviço REST… nesse caso prefiro ir de Slim Framework ou Phalcon).

      VA:F [1.9.11_1134]
      Rating: +4 (from 4 votes)
      #1288
    • Caramba, quanta informação interessante!

      Realmente, se precisa de algo parrudo, Laravel não é o caminho… hoje em dia, inclusive, esqueceria PHP para isso e iria com Node.js + Angular + Express + algum framework da sua escolha.

      Valeu!

      VN:F [1.9.11_1134]
      Rating: -2 (from 2 votes)
      #1311
  8. Luis

    Olá, gostaria de uma ajuda com o Larável 5, Eu instalo mas quando crio o projeto só aparece a pagina inicial com textos q ao atualizar a pagina mudam aleatoriamente

    VA:F [1.9.11_1134]
    Rating: -1 (from 1 vote)
    #1304
    • Dá uma olhada na pasta App… lá tem o MVC já prontinho…

      Se você não sabe o que é MVC, recomendo ir atrás de entender isso (pode ser junto do Laravel) pra conseguir entender como fazer as coisas funcionarem.

      Basicamente, no MVC você tem:
      - Model, seu modelo de dados (banco de dados, JSon, XML etc.)
      - View, isso é, o que o usuário vê na tela (HTML, no caso da web)
      - Controller, que faz a comunicação entre a View e o Model

      Sempre que você acessa, quem responde é o Controller (procura o router.php pra ver qual Controller responde a cada URL).

      O Controller verifica se precisa de algo do Model e responde um HTML para a View, que é o que aparece no seu browser.

      VN:F [1.9.11_1134]
      Rating: -1 (from 1 vote)
      #1310
  9. Erick

    Boa tarde Eduardo, gostei muito do post, mas entrei no site do Laravel e não encontrei link para download do mesmo, trabalhei com codengniter e sinfony e pelo que vejo o laravel vai ser melhor mesmo.

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1320
  10. João Santos

    Laravel é de longe a melhor opção!

    https://www.youtube.com/watch?v=6WdMlW63E3w

    VA:F [1.9.11_1134]
    Rating: +1 (from 1 vote)
    #1322
  11. FERNANDO

    Muito boa a sua análise, pois trabalho com PHP desde 2003 e penso igual a você “like a boss” e agora quero e preciso utilizar um framework que me ajude de verdade!

    obrigado

    VA:F [1.9.11_1134]
    Rating: +1 (from 1 vote)
    #1336
  12. Tiago

    Muito boa a matéria. Me ajudou a escolher a tecnologia que vou usar em um projeto. Mas minha intenção é somente usar o Laravel para construir a API do projeto, e o front end em Angular.

    É recomendável essa abordagem ?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1340
  13. Programador

    Laravel sem dúvida é uma excelente opção, com uma documentação completa, comunidade bem engajada, é maravilhoso! Vou compartilhar algumas informações:

    https://alphabraga.wordpress.com/2014/02/24/deixa-eu-te-falar-porque-o-laravel-e-melhor-que-o-codeigniter/

    http://www.laravel.com.br/curso-de-laravel-completo-e-totalmente-gratis/

    https://medium.com/@andrenba/por-que-laravel-uma-entrevista-exclusiva-com-vedovelli-b2bf022183dc#.sdikeyc8i

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1453
  14. Perfeito, me ajudou a esclarecer entre Laravel e Phalcon e Yii.

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #2749
  15. natural donkey milk cosmetics

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #7819

Deixe um Comentário

Spam Protection by WP-SpamFree

Get Adobe Flash playerPlugin by wpburn.com wordpress themes