{"id":9289,"date":"2015-12-22T11:44:56","date_gmt":"2015-12-22T13:44:56","guid":{"rendered":"https:\/\/king.host\/blog\/?p=9289"},"modified":"2024-06-04T07:45:24","modified_gmt":"2024-06-04T10:45:24","slug":"introducao-ao-phalcon-parte-i","status":"publish","type":"post","link":"https:\/\/king.host\/blog\/tecnologia\/introducao-ao-phalcon-parte-i\/","title":{"rendered":"Introdu\u00e7\u00e3o ao Phalcon \u2013 Parte I"},"content":{"rendered":"<blockquote><p>Confira aqui&nbsp;um guia&nbsp;b\u00e1sico para quem deseja&nbsp;iniciar a utiliza\u00e7\u00e3o do framework Phalcon. Acompanhe o tutorial para saber como&nbsp;iniciar um projeto simples, utilizando URL&#8217;s amig\u00e1veis, Autoloaders, Dependency Management e Controller.<\/p><\/blockquote>\n<p>O Phalcon \u00e9 um framework PHP que promove a arquitetura Model-View-Controller (MVC). Ele se destaca em termos de performance, sendo muito mais r\u00e1pido do que outros frameworks PHP existentes no mercado. A raz\u00e3o de tanta rapidez \u00e9, em parte, pelo fato de n\u00e3o ser um framework PHP comum, j\u00e1 que ele funciona como uma extens\u00e3o do PHP e utiliza a escrita em C.<\/p>\n<p>Neste artigo, vamos mostrar como come\u00e7ar a utilizar o Phalcon, criando um projeto simples.<\/p>\n<p>Para seguir este tutorial, voc\u00ea precisar\u00e1:<\/p>\n<ul>\n<li>Editor de C\u00f3digos, como por exemplo o <a href=\"http:\/\/www.sublimetext.com\/\" target=\"_blank\" rel=\"noopener\">Sublime<\/a>, ou qualquer outro que prefira.<\/li>\n<li>Estar alocado em um servidor com suporte ao Phalcon (caso n\u00e3o seja o seu caso, poder\u00e1 <a href=\"http:\/\/kingho.st\/chat\" target=\"_blank\" rel=\"noopener\">solicitar a transfer\u00eancia<\/a> de servidor para nossa equipe).<\/li>\n<\/ul>\n<p><strong>A estrutura do seu projeto Phalcon <\/strong><\/p>\n<p>Com Phalcon, todos os arquivos relacionados \u00e0 estrutura de pastas est\u00e3o dispon\u00edveis na mem\u00f3ria, ent\u00e3o tudo que voc\u00ea precisa fazer para come\u00e7ar \u00e9 criar uma estrutura de pasta vazia em algum lugar na raiz de documentos do Apache (o padr\u00e3o \u00e9 \/var\/www).<\/p>\n<p>A maneira recomendada para a estrutura do projeto \u00e9 a seguinte:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"git\">\/RAIZ_DA_HOSPEDAGEM\n    app\/\n        controllers\/\n        models\/\n        views\/\n    www\/\n        css\/\n        img\/\n        js\/<\/pre>\n<p><span style=\"line-height: 1.5;\">Sendo assim, voc\u00ea conta com um arquivo do projeto, que possui duas pastas principais: app e www. A primeira vai abrigar a l\u00f3gica do seu aplicativo, enquanto a segunda \u00e9 o lugar onde seu browser ir\u00e1 apontar e ser redirecionado para os recursos na pasta app e ganhar\u00e1 acesso aos recursos frontend da aplica\u00e7\u00e3o. Vale lembrar que para este tutorial n\u00e3o utilizaremos todos os diret\u00f3rios mencionados acima.<\/span><\/p>\n<p><strong>URLs amig\u00e1veis<\/strong><\/p>\n<p>Iremos onfigurar URLs amig\u00e1veis para este tutorial e incentivamos o seu uso em qualquer projeto. URLs amig\u00e1veis s\u00e3o melhores para SEO, bem como f\u00e1ceis de lembrar para os usu\u00e1rios. Phalcon suporta m\u00f3dulos de reescrita de URL&#8217;s&nbsp; fornecidos pelos servidores web mais populares.<\/p>\n<p>Este&nbsp;conjunto de regras ir\u00e1 verificar se o arquivo solicitado existe, se ele n\u00e3o existir precisar\u00e1 ser reescrito pelo m\u00f3dulo do servidor web:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">#\/www\/.htaccess\n\n&lt;IfModule mod_rewrite.c&gt;\n\nRewriteEngine On\n\nRewriteCond %{REQUEST_FILENAME} !-d\n\nRewriteCond %{REQUEST_FILENAME} !-f\n\nRewriteRule ^((?s).*)$ index.php?_url=\/$1 [QSA,L]\n\n&lt;\/IfModule&gt;<\/pre>\n<p><strong>Index<\/strong><br \/>\nO primeiro arquivo que voc\u00ea precisa criar \u00e9 o do bootstrap. Este arquivo servir\u00e1 como base para a sua aplica\u00e7\u00e3o, entregando controle sobre todos os aspectos do projeto. Atrav\u00e9s desse arquivo, voc\u00ea poder\u00e1 programar inicializa\u00e7\u00e3o de componentes, bem como definir os comportamentos do aplicativo.<\/p>\n<p>O arquivo public\/index.php deve ser mais ou menos assim:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&lt;?php\n\nchdir(dirname(__DIR__));\n\ntry {\n \/**\n * Registra um novo autoloader e define\n * os diret\u00f3rios onde estar\u00e3o os arquivos da aplica\u00e7\u00e3o\n *\/\n $loader = new Phalcon\\Loader();\n $loader-&gt;registerDirs(array(\n 'app\/controllers\/',\n 'app\/models\/'\n ))-&gt;register();\n\n \/**\n * Cria o injetor de depend\u00eancia\n *\/\n $di = new Phalcon\\DI\\FactoryDefault();\n\n \/**\n * Configura o componente de views\n *\/\n $di-&gt;set('view', function () {\n $view = new Phalcon\\Mvc\\View();\n $view-&gt;setViewsDir('app\/views\/');\n return $view;\n });\n\n \/**\n * inicia a aplica\u00e7\u00e3o\n *\/\n $application = new Phalcon\\Mvc\\Application($di);\n echo $application-&gt;handle()-&gt;getContent();\n\n} catch (\\Phalcon\\Exception $e) {\n echo \"PhalconException: \", $e-&gt;getMessage();<\/pre>\n<p><strong>Autoloaders<\/strong><\/p>\n<p>A primeira parte do c\u00f3digo bootstrap est\u00e1 registrando um carregador autom\u00e1tico &#8220;Autoloader&#8221;. Este recurso ser\u00e1&nbsp;utilizado para carregar classes como controladores e modelos da aplica\u00e7\u00e3o.<\/p>\n<p>Para este exemplo foi escolhido localizar classes com base em diret\u00f3rios pr\u00e9-definidos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&nbsp;&lt;?php\n\n$loader = new Phalcon\\Loader();\n$loader-&gt;registerDirs(\n array(\n '..\/app\/controllers\/',\n '..\/app\/models\/'\n )\n)-&gt;register();<\/pre>\n<p><strong>Dependency Management<\/strong><\/p>\n<p>Este \u00e9 um conceito importante para quem deseja come\u00e7ar a trabalhar com o Phalcon. O cont\u00eainer de inje\u00e7\u00e3o de depend\u00eancias pode soar complexo, mas \u00e9 bastante simples e pr\u00e1tico. Trata-se de um aglomerado, onde armazenamos os servi\u00e7os que a nossa aplica\u00e7\u00e3o ir\u00e1 usar para trabalhar.<\/p>\n<p>Cada vez que o framework requer um componente, ele ir\u00e1 pedir ao cont\u00eainer utilizando o nome declarado para o servi\u00e7o. J\u00e1 que o Phalcon \u00e9 uma estrutura altamente dissociada, a DI age como uma cola que facilita a integra\u00e7\u00e3o dos diferentes componentes para que atinjam o seu trabalho em conjunto de forma transparente.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&nbsp;php\n\n\/\/ Create a DI\n$di = new Phalcon\\DI\\FactoryDefault();<\/pre>\n<p><strong><br \/>\nCriando um Controller<\/strong><\/p>\n<p>Por padr\u00e3o, o Phalcon ir\u00e1 procurar um controller chamado &#8220;Index&#8221;. Este ser\u00e1 o ponto de partida quando nenhum controller ou action foi passado via comando. O controlador de \u00edndice (app\/controllers\/IndexController.php) se parece com:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&nbsp;&lt;?php\n\nclass IndexController extends Phalcon\\Mvc\\Controller\n{\n public function indexAction()\n {\n echo \"&lt;h1&gt;Ol\u00e1, bem vindo a sua primeira aplica\u00e7\u00e3o com Phalcon!&lt;\/h1&gt;\";\n }\n}<\/pre>\n<p>As classes do controlador devem ter o sufixo &#8220;Controller&#8221; e a\u00e7\u00f5es do controlador devem ter o sufixo &#8220;Action&#8221;. Depois de criar este arquivo, se voc\u00ea acessar o aplicativo a partir do seu navegador, voc\u00ea poder\u00e1 ver o seguinte:<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-9293 \" src=\"https:\/\/king.host\/blog\/wp-content\/uploads\/2015\/12\/bemvindo-780x299.png\" alt=\"bemvindo\" width=\"618\" height=\"237\" border=\"1\" title=\"\" srcset=\"https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2015\/12\/bemvindo-780x299.png 780w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2015\/12\/bemvindo-300x115.png 300w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2015\/12\/bemvindo-1024x393.png 1024w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2015\/12\/bemvindo-400x154.png 400w, https:\/\/cdn-cms.king.host\/blog-hlg\/uploads\/2015\/12\/bemvindo.png 1365w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/p>\n<p>Neste tutorial vimos como instalar o Phalcon e iniciar um projeto simples. Em um pr\u00f3ximo tutorial, vamos mostrar como trabalhar com o MVC e como acessar as informa\u00e7\u00f5es armazenadas no banco de dados.<\/p>\n<p>Adaptado de <a href=\"https:\/\/docs.phalconphp.com\/pt\/latest\/reference\/tutorial.html\" target=\"_blank\" rel=\"noopener\">Docs.PhalconPHP<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Confira aqui&nbsp;um guia&nbsp;b\u00e1sico para quem deseja&nbsp;iniciar a utiliza\u00e7\u00e3o do framework Phalcon. Acompanhe o tutorial para saber como&nbsp;iniciar um projeto simples, utilizando URL&#8217;s amig\u00e1veis, Autoloaders, Dependency Management e Controller. O Phalcon \u00e9 um framework PHP que promove a arquitetura Model-View-Controller (MVC). Ele se destaca em termos de performance, sendo muito mais r\u00e1pido do que outros frameworks [&hellip;]<\/p>\n","protected":false},"author":277,"featured_media":9290,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1179,8],"tags":[1374],"class_list":["post-9289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","category-tecnologia","tag-php"],"_links":{"self":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/9289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/users\/277"}],"replies":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/comments?post=9289"}],"version-history":[{"count":2,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/9289\/revisions"}],"predecessor-version":[{"id":31361,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/posts\/9289\/revisions\/31361"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media\/9290"}],"wp:attachment":[{"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/media?parent=9289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/categories?post=9289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/king.host\/blog\/wp-json\/wp\/v2\/tags?post=9289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}