{"id":5843,"date":"2026-04-04T11:04:51","date_gmt":"2026-04-04T14:04:51","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=5843"},"modified":"2026-04-05T21:36:36","modified_gmt":"2026-04-06T00:36:36","slug":"estrutura-de-pastas-do-cakephp","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/","title":{"rendered":"Estrutura de Pastas do CakePHP"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\">Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia anterior, deve ter aberto a pasta do projeto e pensado: <em>&#8220;Puxa, por que tantos arquivos?&#8221;<\/em>. Calma! Como um especialista que j\u00e1 &#8220;assou&#8221; centenas de projetos, posso te garantir: essa organiza\u00e7\u00e3o \u00e9 o seu maior trunfo. No CakePHP, <strong>cada arquivo tem um endere\u00e7o fixo<\/strong>, e entender esse mapa \u00e9 o que separa um programador que &#8220;faz sites&#8221; de um desenvolvedor que constr\u00f3i <strong>sistemas escal\u00e1veis<\/strong>.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Neste quarto artigo da nossa trilha, vamos explorar a <strong>Estrutura de Pastas do CakePHP<\/strong>. Prepare-se para entender a anatomia do framework e descobrir por que a conven\u00e7\u00e3o \u00e9 a alma da produtividade.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">Estrutura de Pastas: Onde cada arquivo deve ficar no CakePHP<\/h1>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Quando trabalhamos com PHP puro ou frameworks menos opinativos, perdemos horas discutindo onde colocar uma classe de valida\u00e7\u00e3o ou onde salvar um arquivo de configura\u00e7\u00e3o. No CakePHP, essa discuss\u00e3o n\u00e3o existe. O framework adota o princ\u00edpio de <strong>Conven\u00e7\u00e3o sobre Configura\u00e7\u00e3o<\/strong>, o que significa que, se voc\u00ea colocar o arquivo no lugar certo e com o nome certo, a &#8220;m\u00e1gica&#8221; acontece automaticamente.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Dominar a \u00e1rvore de diret\u00f3rios do CakePHP \u00e9 o primeiro passo para parar de lutar contra a ferramenta e come\u00e7ar a us\u00e1-la a seu favor.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. O N\u00edvel Superior: A Vis\u00e3o Geral<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Ao abrir a raiz do seu projeto, voc\u00ea encontrar\u00e1 pastas que gerenciam o ciclo de vida da aplica\u00e7\u00e3o, desde as depend\u00eancias at\u00e9 os arquivos p\u00fablicos.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>bin\/<\/strong>: Cont\u00e9m os execut\u00e1veis de console. \u00c9 aqui que mora o arquivo <code>cake<\/code>, que usamos para rodar o servidor embutido ou gerar c\u00f3digo automaticamente com o Bake.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>config\/<\/strong>: O c\u00e9rebro do seu app. Aqui ficam as defini\u00e7\u00f5es de rotas, banco de dados e e-mail.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>logs\/<\/strong>: Essencial para debug. Tudo o que der errado no seu c\u00f3digo ser\u00e1 registrado aqui.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>plugins\/<\/strong>: Onde moram as extens\u00f5es de terceiros ou m\u00f3dulos isolados que voc\u00ea mesmo criar.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>resources\/<\/strong>: Para arquivos n\u00e3o-PHP, como arquivos de tradu\u00e7\u00e3o (<code>locales<\/code>).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>src\/<\/strong>: O cora\u00e7\u00e3o pulsante. Aqui vive 99% do seu c\u00f3digo customizado.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>templates\/<\/strong>: Onde o HTML ganha vida (as Views).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>tests\/<\/strong>: Onde voc\u00ea escreve seus testes automatizados (PHPUnit).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>tmp\/<\/strong>: Arquivos tempor\u00e1rios, cache e sess\u00f5es.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>vendor\/<\/strong>: A &#8220;caixa preta&#8221; do Composer. <strong>Nunca<\/strong> mexa aqui manualmente!<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>webroot\/<\/strong>: A \u00fanica pasta que o mundo exterior deve ver.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. A Pasta <code>config<\/code>: Onde as regras s\u00e3o ditadas<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Antes de escrever uma linha de l\u00f3gica, voc\u00ea passar\u00e1 pela pasta <code>config\/<\/code>. Ela \u00e9 pequena, mas poderosa.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>app.php<\/strong>: Cont\u00e9m configura\u00e7\u00f5es globais. Aqui voc\u00ea define o fuso hor\u00e1rio, o idioma padr\u00e3o e as chaves de seguran\u00e7a.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>app_local.php<\/strong>: O arquivo de segredos. \u00c9 aqui que voc\u00ea configura a conex\u00e3o com o MySQL ou PostgreSQL. <strong>Dica de ouro:<\/strong> Nunca envie este arquivo para o Git; ele deve ser \u00fanico para cada ambiente (Local, Staging, Produ\u00e7\u00e3o).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>routes.php<\/strong>: Aqui voc\u00ea mapeia URLs amig\u00e1veis. Quer que <code>meusite.com\/blog<\/code> aponte para <code>ArtigosController<\/code>? \u00c9 aqui que voc\u00ea faz isso.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. O Diret\u00f3rio <code>src<\/code>: O Santu\u00e1rio do Desenvolvedor<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Se o CakePHP fosse um corpo humano, a pasta <code>src\/<\/code> seria os \u00f3rg\u00e3os vitais. Quase tudo o que discutimos sobre o <strong>MVC<\/strong> est\u00e1 aqui dentro.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><code>src\/Controller\/<\/code><\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Aqui moram os controladores. Eles recebem as requisi\u00e7\u00f5es e decidem o que fazer.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Exemplo:<\/strong> <code>ArtigosController.php<\/code>. Note o plural e o sufixo &#8220;Controller&#8221;. Isso \u00e9 conven\u00e7\u00e3o pura!<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><code>src\/Model\/<\/code><\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Esta pasta \u00e9 dividida em tr\u00eas subpastas fundamentais:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Entity\/<\/strong>: Representa um \u00fanico registro do banco de dados (ex: <code>Artigo.php<\/code>). Aqui voc\u00ea coloca l\u00f3gica de visualiza\u00e7\u00e3o de dados, como um m\u00e9todo <code>getFormatDate()<\/code>.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Table\/<\/strong>: Representa a tabela inteira e lida com consultas (ex: <code>ArtigosTable.php<\/code>). \u00c9 aqui que voc\u00ea define valida\u00e7\u00f5es e relacionamentos (HasMany, BelongsTo).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Behavior\/<\/strong>: L\u00f3gica reaproveit\u00e1vel entre tabelas, como o comportamento de &#8220;Timestamp&#8221; (que preenche datas automaticamente).<\/li>\n<\/ol>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><code>src\/View\/<\/code><\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Diferente dos templates HTML, esta pasta cont\u00e9m classes auxiliares:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Helper\/<\/strong>: Fun\u00e7\u00f5es para usar nos templates, como o <code>FormHelper<\/code> ou <code>HtmlHelper<\/code>.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><code>src\/Command\/<\/code> e <code>src\/Middleware\/<\/code><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Command<\/strong>: Para criar scripts que rodam via terminal (ex: um script de limpeza de banco).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Middleware<\/strong>: Camadas que interceptam a requisi\u00e7\u00e3o antes de chegar ao controller (ex: um filtro que verifica se o site est\u00e1 em manuten\u00e7\u00e3o).<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. <code>templates<\/code>: Onde o usu\u00e1rio interage<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Antigamente chamada de &#8220;View&#8221;, a pasta <code>templates\/<\/code> agora fica na raiz para facilitar o acesso de designers e desenvolvedores front-end.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">A estrutura aqui espelha os seus Controllers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><code>templates\/Artigos\/index.php<\/code> (Lista todos os artigos).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><code>templates\/Artigos\/view.php<\/code> (Mostra um artigo espec\u00edfico).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><code>templates\/layout\/<\/code>: Cont\u00e9m o &#8220;esqueleto&#8221; do site (Header, Footer, Sidebar).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><code>templates\/element\/<\/code>: Pequenos peda\u00e7os de c\u00f3digo que se repetem, como um banner ou um card de produto.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. <code>webroot<\/code>: A Linha de Frente<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Por quest\u00f5es de seguran\u00e7a, o seu servidor web (Apache ou Nginx) deve apontar para esta pasta. Isso garante que ningu\u00e9m consiga acessar seus arquivos de configura\u00e7\u00e3o ou l\u00f3gica diretamente pela URL.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Dentro de <code>webroot\/<\/code>, voc\u00ea deve organizar seus ativos est\u00e1ticos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><code>css\/<\/code><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><code>js\/<\/code><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><code>img\/<\/code><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><code>files\/<\/code> (Para uploads de usu\u00e1rios).<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">6. Exemplo Pr\u00e1tico: Criando um novo recurso<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Imagine que voc\u00ea quer criar uma se\u00e7\u00e3o de &#8220;Categorias&#8221; no seu blog. Onde cada arquivo deve morar? Seguindo a estrutura do CakePHP:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Banco de Dados:<\/strong> Tabela <code>categorias<\/code>.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Model (Tabela):<\/strong> <code>src\/Model\/Table\/CategoriasTable.php<\/code>.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Model (Entidade):<\/strong> <code>src\/Model\/Entity\/Categoria.php<\/code>.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Controller:<\/strong> <code>src\/Controller\/CategoriasController.php<\/code>.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Templates:<\/strong> <code>templates\/Categorias\/index.php<\/code> e <code>templates\/Categorias\/add.php<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Se voc\u00ea seguir essa nomenclatura e localiza\u00e7\u00e3o, o CakePHP saber\u00e1 exatamente como conectar as pe\u00e7as sem que voc\u00ea precise escrever uma \u00fanica linha de <code>include<\/code>.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Por que essa organiza\u00e7\u00e3o \u00e9 superior?<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Muitos iniciantes reclamam que o CakePHP \u00e9 &#8220;r\u00edgido&#8221;. No entanto, essa rigidez \u00e9 o que traz <strong>escalabilidade<\/strong>. Quando voc\u00ea entra em um projeto CakePHP feito por outra pessoa, voc\u00ea n\u00e3o gasta tr\u00eas dias tentando entender onde os arquivos est\u00e3o. Voc\u00ea vai direto na pasta <code>src\/Controller<\/code> e pronto.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Essa padroniza\u00e7\u00e3o facilita:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Trabalho em equipe:<\/strong> Todos falam a mesma &#8220;l\u00edngua&#8221; de diret\u00f3rios.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Updates do Framework:<\/strong> O n\u00facleo est\u00e1 isolado em <code>vendor\/<\/code>, ent\u00e3o atualizar o CakePHP \u00e9 seguro.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Seguran\u00e7a:<\/strong> A separa\u00e7\u00e3o entre <code>src\/<\/code> e <code>webroot\/<\/code> \u00e9 uma barreira natural contra ataques.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Conclus\u00e3o: O Mapa na palma da sua m\u00e3o<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Estrutura de Pastas do CakePHP: Entender a <strong>Estrutura de Pastas do CakePHP<\/strong> \u00e9 como aprender a planta baixa da sua pr\u00f3pria casa. Agora voc\u00ea sabe onde cada ferramenta est\u00e1 guardada e como adicionar novos c\u00f4modos de forma organizada.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">N\u00e3o tente decorar tudo de uma vez. Com a pr\u00e1tica e o uso constante do terminal, esses caminhos se tornar\u00e3o autom\u00e1ticos na sua mente. No pr\u00f3ximo artigo, vamos falar sobre o conceito que torna tudo isso funcional: <strong>&#8220;Conven\u00e7\u00e3o sobre Configura\u00e7\u00e3o: Por que o CakePHP acelera tanto o desenvolvimento?&#8221;<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Mas antes de dominar o CakePHP, se for o seu caso, toda jornada tem um in\u00edcio. Vamos entender quais s\u00e3o os conhecimentos b\u00e1sicos necess\u00e1rios para aproveitar ao m\u00e1ximo este poderoso framework. Para iniciar seus estudos no CakePHP, voc\u00ea precisar\u00e1 dominar as seguintes tecnologias:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/html\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp\" alt=\"HTML\" class=\"wp-image-600\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">HTML<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/css\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp\" alt=\"CSS\" class=\"wp-image-702\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">CSS<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/javascript\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp\" alt=\"Javascript\" class=\"wp-image-804\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">JavaScript<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/sql\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/php\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Estrutura de Pastas do CakePHP: E por fim e n\u00e3o menos importante, compartilhe nossos artigos com aquele amigo iniciante ou aquele que j\u00e1 trabalha na \u00e1rea e precisa de um material de apoio completinho!<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Diga adeus \u00e0 bagun\u00e7a de arquivos e seja bem-vindo ao desenvolvimento profissional!<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5819,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[97],"tags":[],"class_list":["post-5843","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cakephp","wpcat-97-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Estrutura de Pastas do CakePHP - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia anterior, deve ter aberto a pasta do projeto e pensado:...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Estrutura de Pastas do CakePHP - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia anterior, deve ter aberto a pasta do projeto e pensado:...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-04T14:04:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-06T00:36:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Estrutura de Pastas do CakePHP\",\"datePublished\":\"2026-04-04T14:04:51+00:00\",\"dateModified\":\"2026-04-06T00:36:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/\"},\"wordCount\":1211,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"articleSection\":[\"CakePHP\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/\",\"name\":\"Estrutura de Pastas do CakePHP - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"datePublished\":\"2026-04-04T14:04:51+00:00\",\"dateModified\":\"2026-04-06T00:36:36+00:00\",\"description\":\"Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia anterior, deve ter aberto a pasta do projeto e pensado:...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"width\":758,\"height\":426,\"caption\":\"CakePHP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/estrutura-de-pastas-do-cakephp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Estrutura de Pastas do CakePHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Estrutura de Pastas do CakePHP - BLOG THIAGO ROSSI","description":"Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia anterior, deve ter aberto a pasta do projeto e pensado:...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/","og_locale":"pt_BR","og_type":"article","og_title":"Estrutura de Pastas do CakePHP - BLOG THIAGO ROSSI","og_description":"Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia anterior, deve ter aberto a pasta do projeto e pensado:...","og_url":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2026-04-04T14:04:51+00:00","article_modified_time":"2026-04-06T00:36:36+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","type":"image\/png"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Estrutura de Pastas do CakePHP","datePublished":"2026-04-04T14:04:51+00:00","dateModified":"2026-04-06T00:36:36+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/"},"wordCount":1211,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","articleSection":["CakePHP"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/","url":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/","name":"Estrutura de Pastas do CakePHP - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","datePublished":"2026-04-04T14:04:51+00:00","dateModified":"2026-04-06T00:36:36+00:00","description":"Estrutura de Pastas do CakePHP: Se voc\u00ea j\u00e1 instalou o CakePHP seguindo o nosso guia anterior, deve ter aberto a pasta do projeto e pensado:...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","width":758,"height":426,"caption":"CakePHP"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/estrutura-de-pastas-do-cakephp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Estrutura de Pastas do CakePHP"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=5843"}],"version-history":[{"count":4,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5843\/revisions"}],"predecessor-version":[{"id":5847,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5843\/revisions\/5847"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/5819"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=5843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=5843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=5843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}