<http://schema.org/articleBody>
"Fala pessoal! Tudo bem? Espero que sim! Depois de uma longa temporada retorno com mais este post sobre o micro-framework Silex! Desta vez abordarei o uso dos middlewares no mesmo.\n\n&lt;h2&gt;Middlewares&lt;/h2&gt;\n\nOs middlewares no Silex s\u00E3o utilizados para mudar o comportamento padr\u00E3o do mesmo, os middlewares se mostram muito \u00FAteis quando pensamos na valida\u00E7\u00E3o de tokens de acesso, save de logs e muitas outras tarefas. Basicamente temos dois tipos de middlewares, os de aplica\u00E7\u00E3o e os de rota. Mostraremos as diferen\u00E7as abaixo:\n\n&lt;h2&gt;Middlewares De Aplica\u00E7\u00E3o&lt;/h2&gt;\n\nComo o pr\u00F3prio nome j\u00E1 diz, esses middlewares impactam a aplica\u00E7\u00E3o como um todo e s\u00E3o tr\u00EAs. Vamos ver como cada um funciona logo abaixo:\n\n&lt;h3&gt;Before Method&lt;/h3&gt;\n\nO m\u00E9todo &lt;code&gt;before();&lt;/code&gt; \u00E9 sempre executado antes de suas rotas, no escopo de aplica\u00E7\u00E3o ele ser\u00E1 acionado sempre que um usu\u00E1rio fizer alguma requisi\u00E7\u00E3o a mesma. Veja o c\u00F3digo abaixo:\n\n&lt;pre&gt;&amp;lt;?php\n#...\n$app = new Application();\n\n$app-&amp;gt;before(function(){\n    //Sua l\u00F3gica aqui.\n});\n\n$app-&amp;gt;get('/', function(Application $app) {\n    return $app-&amp;gt;escape('Middlewares');\n});\n\n$app-&amp;gt;run();\n&lt;/pre&gt;\n\nDas linhas 5 a 7 temos a defini\u00E7\u00E3o do nosso middleware &lt;code&gt;before&lt;/code&gt;, como comentado, sempre que nossa aplica\u00E7\u00E3o for acessada, o middleware ser\u00E1 acionado antes da execu\u00E7\u00E3o da rota em quest\u00E3o. O before se torna muito \u00FAtil para valida\u00E7\u00E3o de tokens de acesso, valida\u00E7\u00E3o de sess\u00E3o, transforma\u00E7\u00E3o de dados, dentre outros.\n\n&lt;h3&gt;After Method&lt;/h3&gt;\n\nO &lt;code&gt;after();&lt;/code&gt;, apesar do nome sugestivo, n\u00E3o quer dizer que o mesmo ser\u00E1 executado ap\u00F3s a chamada da rota, calma v\u00F4 explicar!\nO &lt;code&gt;after&lt;/code&gt; executa antes da sa\u00EDda do response da rota chamada!\n\n&lt;pre&gt;&amp;lt;?php\n#...\n$app-&amp;gt;after(function(){\n    //Exemplo\n    print 'After Middleware | ';\n});\n\n$app-&amp;gt;get('/', function(Application $app) {\n    return $app-&amp;gt;escape('Router Content!');\n});\n\n#...\n&lt;/pre&gt;\n\nA saida do c\u00F3digo acima seria algo como:\n&lt;code&gt; After Middleware | Router Content! &lt;/code&gt;\nUm caso de uso para tal, seria a transforma\u00E7\u00E3o do response dentre outras tarefas!\n\n&lt;h3&gt;Finish Method&lt;/h3&gt;\n\nExiste ainda o middleware &lt;code&gt;finish();&lt;/code&gt;, esse sim! \u00C9 executado ap\u00F3s a execu\u00E7\u00E3o da rota em quest\u00E3o!\nVamos ao exemplo:\n\n&lt;pre&gt;&amp;lt;?php\n#...\n$app-&amp;gt;finish(function(){\n    //Exemplo\n    print 'Finish middleware';\n});\n\n$app-&amp;gt;get('/', function(Application $app) {\n    return $app-&amp;gt;escape('Router Content | ');\n});\n#...\n&lt;/pre&gt;\n\nA sa\u00EDda do c\u00F3digo seria:\n&lt;code&gt; Router Content | Finish middleware &lt;/code&gt;\nMuito \u00FAtil para save de logs dentre outras tarefas!\n\n&lt;h2&gt;Conclus\u00E3o&lt;/h2&gt;\n\nEsses s\u00E3o os middlewares de aplica\u00E7\u00E3o do Silex Framework, percebemos que os mesmos tornam nossos trabalhos bem mais simplificados em determinados casos, s\u00F3 precisamos tomar um pouco de cuidado para n\u00E3o deixa-los um tanto quanto complexos, evitando assim dor de cabe\u00E7a futura!\nEm nosso pr\u00F3ximo post, ainda sobre Middlewares, abordaremos os middlewares de rotas e algumas particularidades dos middlewares como um todo!\nO c\u00F3digo completo deste post voc\u00EA pode encontrar no &lt;a href=\"https://goo.gl/LI4BsY\" target=\"_blank\"&gt;gist&lt;/a&gt;. Abra\u00E7os e at\u00E9 a pr\u00F3xima!"^^<http://www.w3.org/2001/XMLSchema#string>
<http://tableless.com.br/silex-middlewares-101-parte-1/>