Silex Micro Framework – parte 1

Silex Framework

Silex Framework

Venho estudando e usando o Silex há algum tempo já! Estou num projeto pequeno para atualização de mídias do desktop de todas as máquinas da empresa (~10 mil empregados). Vi uma oportunidade de usá-lo e trabalhar com REST. Usando o Silex, adicionei algumas classes e deixei ele um pouco mais fácil de trabalhar, principalmente no que se refere ao uso do Doctrine e de autorização e autenticação (usamos LDAP). Depois conto mais sobre o que fiz, mas queria mostrar como ele funciona e se é ou não interessante usá-lo.

Para instalar o Silex ficou mais fácil (pelo menos eu achei!!). Agora ele também está usando o Composer, assim como quase tudo relativo a frameworks, bibliotecas e ferramentas em PHP. Por sinal, quem não conhece o Composer, fica a dica de estudá-lo!! Muito boa ideia trazida de outras plataformas como Ruby (RubyGems) e Python (PyPI). Vale um post sobre ele no futuro!

Voltando, para instalar o Silex basta criar um arquivo chamado composer.json dentro da pasta onde vai trabalhar com seu projeto e colocar o seguinte conteúdo nele:

{
    "require": {
        "silex/silex": "~1.1"
    }
}

E depois basta rodar os dois comandos abaixo (rodando no Linux):

$ curl -s http://getcomposer.org/installer | php
$ php composer.phar install

Com isso, já tem o Silex instalado na pasta do projeto. Ele estará na pasta vendor e dentro desta aparecerá o seguinte:

  • composer – arquivos do Composer de autoload (PSR-0).
  • pimple – biblioteca do PimpleContainer de Injeção de Dependência.
  • silex – arquivos do Silex.
  • symfony – componentes do Symfony2, como o Request e o Response.
  • autoload.php – arquivo de autoload do Silex gerado pelo Composer.

Em seguida, basta criar um arquivo onde faremos o bootstrap do Silex. Pode chamar este arquivo de index.php ou do que quiser (eu prefiro app.php) e colocar o seguinte conteúdo:

// index.php
require_once 'vendor/autoload.php';

$app = new SilexApplication();
$app->get('/', function () {
    return 'Seja bem vindo ao Silex!';
});
$app->run();

Então temos, até agora, dentro da pasta do projeto os seguintes arquivos e pastas: index.php, vendor, composer.json e composer.lock. Sendo que estes dois últimos são arquivos do Composer. Pra finalizar esta primeira parte, você deve criar um arquivo .htaccess nessa mesma pasta para redirecionar toda requisição para o index.php.

<IfModule mod_rewrite.c>
  Options -MultiViews
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [L]
</IfModule>

Crie um VirtualHost para a pasta web do projeto:

Listen 88
<VirtualHost 127.0.0.1:88>
  DocumentRoot "/caminho/para/projeto/web"
  DirectoryIndex "index.php"
</VirtualHost>

Reinicie o Apache! Agora é só acessar o endereço http://127.0.0.1:88/ que deve aparecer no navegador a frase “Seja bem vindo ao Silex!“. Se aparecer, tá tudo certo, está com o Silex funcionando no seu projeto. Nos próximos posts sobre isso, vou contar:

  1. Parte 2 – Instalação e Introdução ao Twig
  2. Parte 3 – Instalação e Introdução ao Doctrine DBAL
  3. Parte 4 – Meu Silex Skeleton – Como e Por quê
  4. Parte 5 – Construindo um TODO LIST com Silex, Twig e Doctrine DBAL
  5. Parte 6 – Logging no Silex com Monolog
  6. Parte 7 – Estendendo o Twig no Silex
  7. Parte 8 – Profiling do Silex

15 pensamentos em “Silex Micro Framework – parte 1”

  1. Bom dia,
    Antes de tudo quero agradecer pela postagem, é um ótimo conteúdo e por se dedicar a escrever de um forma tão simples e clara… sei que não é fácil se dedicar a isso. E esse é um assunto raro e difícil de encontrar na internet.
    você ainda pretende postar sobre:
    –> Como trabalhar com o Twig e o Doctrine DBAL
    –> Trabalhando com Logs
    –> Como estruturei meu projeto
    –> Criação de um projeto esqueleto com Packagist e Composer
    –> Profiling do Silex
    –> Algumas dicas

    1. Valeu por ter gostado de meus posts!! Nos próximos dias vou postar sobre as outras partes!! Estou me devendo isso! Sem falta a segunda parte esse fim de semana.

  2. Bom dia Marcio,
    Curti muito seu blog e estou de volta, mas vi que não postou sobre a 2º parte do Silex: Trabalhando com Twig e Doctrine DBAL.
    Estou criando um tutorial sobre sobre esse tema mas não tenho onde postar! se tiver interesse me manda um email! Até mais

  3. Marcio,

    Primeiramente obrigado por disponibilizar conhecimento.

    Baixei uma estrutura do Silex, que contém uma pasta web (index.php) e outra vendor (componentes Symfony). No manual do Silex diz que se seus arquivos não estão na raiz do projeto você deve criar .htaccess direcionando para a pasta web. Fiz tudo conforme o manual e está dando erro 500. Tem alguma sugestão que pode me ajudar? Obrigado!

    1. Oi, Adriano! Poderia colocar aqui seu .htaccess para ver como está? E qual a versão do Apache que está usando? Outra coisa, o DirectoryIndex do projeto é a pasta web e o .htaccess deve estar dentro dela. Meu .htaccess que uso é esse abaixo e eu uso uma estrutura parecida com a sua:


      Options -MultiViews
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^ index.php [L]

      Ah, e sempre pode usar o Servidor Web embutido do PHP para testar. Rode dentro da pasta web – onde está o index.php – o comando php -S localhost:4545 e poderá acessar seu site colocando no browser http://localhost:4545 (ou qualquer outra porta que queira usar).

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *