<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Php on Tiago Costa</title>
    <link>https://tiagoscosta.tpps.com.br/tags/php/</link>
    <description>Recent content in Php on Tiago Costa</description>
    <generator>Hugo</generator>
    <language>pt-br</language>
    <lastBuildDate>Sat, 09 May 2026 22:17:00 +0000</lastBuildDate>
    <atom:link href="https://tiagoscosta.tpps.com.br/tags/php/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>📝 Dominando Padrões de Criação: Singleton e Factory Method</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-dominando-padr%C3%B5es-de-cria%C3%A7%C3%A3o-singleton-e-factory-method/</link>
      <pubDate>Sat, 09 May 2026 22:17:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-dominando-padr%C3%B5es-de-cria%C3%A7%C3%A3o-singleton-e-factory-method/</guid>
      <description>&lt;p&gt;No desenvolvimento orientado a objetos, a forma como criamos instâncias de classes pode determinar quão flexível ou rígido um sistema será. Os padrões &lt;strong&gt;Singleton&lt;/strong&gt; e &lt;strong&gt;Factory Method&lt;/strong&gt; oferecem controle sobre esse processo, garantindo eficiência e baixo acoplamento.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-singleton-a-instância-única&#34;&gt;&#xA;  ​1. Singleton: A Instância Única&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-singleton-a-inst%c3%a2ncia-%c3%banica&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;​O &lt;strong&gt;Singleton&lt;/strong&gt; é utilizado quando precisamos garantir que uma classe tenha &lt;strong&gt;apenas uma instância&lt;/strong&gt; durante toda a execução do programa. Ele centraliza o acesso a um recurso compartilhado.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 O Mistério dos Caracteres Interrogados: Por que a flag -utf8 no s3270 é a &#34;Bala de Prata&#34;</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-o-mist%C3%A9rio-dos-caracteres-interrogados-por-que-a-flag-utf8-no-s3270-%C3%A9-a-bala-de-prata/</link>
      <pubDate>Thu, 09 Apr 2026 11:31:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-o-mist%C3%A9rio-dos-caracteres-interrogados-por-que-a-flag-utf8-no-s3270-%C3%A9-a-bala-de-prata/</guid>
      <description>&lt;p&gt;Se você trabalha com integração de sistemas modernos e Mainframes via protocolo 3270, certamente já se deparou com este cenário frustrante: sua aplicação PHP recebe os dados, mas o que deveria ser &lt;strong&gt;&amp;ldquo;LIGAÇÃO&amp;rdquo;&lt;/strong&gt; aparece como &lt;strong&gt;&amp;ldquo;LIGA??O&amp;rdquo;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Mesmo testando diversos charsets no construtor da sua classe, o sinal de interrogação insiste em aparecer. Vamos entender por que a flag &lt;code&gt;-utf8&lt;/code&gt; resolve isso e como ela atua no fluxo de dados.&lt;/p&gt;&#xA;&lt;h2 id=&#34;o-problema-o-choque-de-três-mundos&#34;&gt;&#xA;  O Problema: O Choque de Três Mundos&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#o-problema-o-choque-de-tr%c3%aas-mundos&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Para entender a solução, precisamos visualizar o caminho que o dado percorre:&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 Sanitização de Dados e Gestão de Memória: Como Criar Processos de Longa Duração Resilientes no Laravel</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-sanitiza%C3%A7%C3%A3o-de-dados-e-gest%C3%A3o-de-mem%C3%B3ria-como-criar-processos-de-longa-dura%C3%A7%C3%A3o-resilientes-no-laravel/</link>
      <pubDate>Sat, 07 Feb 2026 00:53:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-sanitiza%C3%A7%C3%A3o-de-dados-e-gest%C3%A3o-de-mem%C3%B3ria-como-criar-processos-de-longa-dura%C3%A7%C3%A3o-resilientes-no-laravel/</guid>
      <description>&lt;p&gt;Ao desenvolver Workers ou comandos que rodam em loop infinito (como consumidores de Kafka ou RabbitMQ), o desenvolvedor enfrenta dois grandes inimigos: &lt;strong&gt;a inconsistência de dados (registros fantasma)&lt;/strong&gt; e o &lt;strong&gt;estouro de memória&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;​Neste artigo, veremos como limpar o banco de dados e manter a saúde do servidor PHP ao mesmo tempo.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-o-problema-registros-inconsistentes-e-memória-infinita&#34;&gt;&#xA;  ​1. O Problema: Registros Inconsistentes e Memória Infinita&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-o-problema-registros-inconsistentes-e-mem%c3%b3ria-infinita&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;​Em sistemas legados, é comum encontrar registros com colunas nulas que impedem a lógica de updateOrCreate. Além disso, se o seu script roda 24/7, cada consulta ao banco pode acumular logs internos, e cada objeto criado consome memória que o PHP, por padrão, demora a liberar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 Guia Definitivo: Laravel &#43; Docker &#43; Xdebug no WSL2</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-guia-definitivo-laravel-docker-xdebug-no-wsl2/</link>
      <pubDate>Wed, 28 Jan 2026 13:01:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-guia-definitivo-laravel-docker-xdebug-no-wsl2/</guid>
      <description>&lt;p&gt;Este artigo detalha como configurar um ambiente de desenvolvimento onde o código reside no sistema de arquivos do Linux (WSL), rodando em containers Docker, com debug funcional no VS Code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-por-que-rodar-no-diretório-do-wsl&#34;&gt;&#xA;  1. Por que rodar no diretório do WSL?&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-por-que-rodar-no-diret%c3%b3rio-do-wsl&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Para performance máxima. O Docker Desktop no Windows tem um gargalo de IO quando acessa arquivos no &lt;code&gt;/mnt/c/&lt;/code&gt;. Ao mover o projeto para &lt;code&gt;\\wsl.localhost\Ubuntu\home\...&lt;/code&gt;, a aplicação Laravel pode rodar até 10x mais rápido.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 Extração de Dados em Mainframe: Mapeando Coordenadas com PHP e s3270</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-extra%C3%A7%C3%A3o-de-dados-em-mainframe-mapeando-coordenadas-com-php-e-s3270/</link>
      <pubDate>Thu, 08 Jan 2026 12:57:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-extra%C3%A7%C3%A3o-de-dados-em-mainframe-mapeando-coordenadas-com-php-e-s3270/</guid>
      <description>&lt;p&gt;No artigo anterior, link no estará no rodapé, aprendemos como garantir que a tela do Mainframe esteja pronta para leitura. Agora, o desafio é outro: como extrair informações específicas de uma grade de 24x80 caracteres sem transformar seu código em uma &amp;ldquo;sopa de números&amp;rdquo;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;o-sistema-de-coordenadas-3270&#34;&gt;&#xA;  O Sistema de Coordenadas 3270&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#o-sistema-de-coordenadas-3270&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Diferente de sistemas web onde os elementos são identificados por IDs ou Classes, no Mainframe tudo é baseado em &lt;strong&gt;posição fixa&lt;/strong&gt;. A tela é uma matriz rígida.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 Automação de Mainframe com PHP: O Guia de Sobrevivência ao s3270</title>
      <link>https://tiagoscosta.tpps.com.br/posts/automa%C3%A7%C3%A3o-de-mainframe-com-php-o-guia-de-sobreviv%C3%AAncia-ao-s3270/</link>
      <pubDate>Thu, 08 Jan 2026 12:54:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/automa%C3%A7%C3%A3o-de-mainframe-com-php-o-guia-de-sobreviv%C3%AAncia-ao-s3270/</guid>
      <description>&lt;p&gt;Automatizar terminais 3270 (Mainframes) usando PHP é um desafio que mistura protocolos modernos com sistemas de décadas de existência. O segredo de uma automação que não &amp;ldquo;quebra&amp;rdquo; está na forma como você lê os dados da tela.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-o-problema-da-velocidade-php-vs-mainframe&#34;&gt;&#xA;  1. O Problema da Velocidade: PHP vs. Mainframe&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-o-problema-da-velocidade-php-vs-mainframe&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;O PHP executa instruções em microssegundos. Já o Mainframe processa dados em uma arquitetura baseada em blocos e buffers de rede. Se o seu script tentar ler a tela antes do mainframe terminar de pintá-la, você obterá dados incompletos ou erros de sincronia.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 PHP: Do Caos ao Clean Code</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-php-do-caos-ao-clean-code/</link>
      <pubDate>Fri, 19 Dec 2025 09:51:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-php-do-caos-ao-clean-code/</guid>
      <description>&lt;p&gt;Escrever código é uma arte, e como toda arte, existem princípios que podem elevar a qualidade de sua obra. No mundo da programação, um desses princípios é o &lt;strong&gt;Clean Code&lt;/strong&gt;. Mas o que exatamente significa &amp;ldquo;código limpo&amp;rdquo;?&lt;/p&gt;&#xA;&lt;p&gt;Clean Code, como popularizado por Robert C. Martin (Uncle Bob), refere-se a um código que é fácil de ler, entender, manter e estender. Ele não apenas funciona, mas também é elegante e coeso, facilitando a vida de qualquer desenvolvedor que precise interagir com ele – incluindo você no futuro.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 REST ou RESTful? Pare de confundir e domine com PHP</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-rest-ou-restful-pare-de-confundir-e-domine-com-php/</link>
      <pubDate>Thu, 18 Dec 2025 10:30:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-rest-ou-restful-pare-de-confundir-e-domine-com-php/</guid>
      <description>&lt;p&gt;No mundo do desenvolvimento web, os termos &lt;strong&gt;REST&lt;/strong&gt; e &lt;strong&gt;RESTful&lt;/strong&gt; são onipresentes. Embora pareçam a mesma coisa, entender a nuance entre o conceito e a prática é o que diferencia um desenvolvedor iniciante de um profissional que domina a arquitetura de sistemas.&lt;/p&gt;&#xA;&lt;p&gt;Neste artigo, vamos desmistificar esses conceitos e construir uma API prática em PHP utilizando todos os verbos HTTP.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-o-que-é-rest&#34;&gt;&#xA;  1. O que é REST?&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-o-que-%c3%a9-rest&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;REST&lt;/strong&gt; (Representational State Transfer) é um &lt;strong&gt;estilo de arquitetura&lt;/strong&gt; definido por Roy Fielding em 2000. Ele estabelece um conjunto de restrições que, quando seguidas, permitem a criação de sistemas web escaláveis, leves e de fácil manutenção.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 Diferença entre Web Crawler e Web Scrapping</title>
      <link>https://tiagoscosta.tpps.com.br/posts/diferen%C3%A7a-entre-web-crawler-e-web-scrapping/</link>
      <pubDate>Thu, 18 Dec 2025 09:56:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/diferen%C3%A7a-entre-web-crawler-e-web-scrapping/</guid>
      <description>&lt;p&gt;Embora os termos &lt;strong&gt;Web Crawler&lt;/strong&gt; e &lt;strong&gt;Web Scraping&lt;/strong&gt; sejam frequentemente usados como sinônimos, eles desempenham papéis distintos (mas complementares) no ecossistema de coleta de dados na internet.&lt;/p&gt;&#xA;&lt;p&gt;Imagine a internet como uma imensa biblioteca: o &lt;strong&gt;Crawler&lt;/strong&gt; é o bibliotecário que percorre os corredores anotando quais livros existem, enquanto o &lt;strong&gt;Scraper&lt;/strong&gt; é o pesquisador que abre um livro específico para copiar um parágrafo importante.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-web-crawler-o-explorador&#34;&gt;&#xA;  1. Web Crawler: O Explorador&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-web-crawler-o-explorador&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;O objetivo principal de um Crawler (também conhecido como spider ou bot) é a &lt;strong&gt;indexação&lt;/strong&gt;. Ele navega de link em link para descobrir novas páginas e entender a estrutura de um site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>🧱 SOLID em PHP: Exemplo Prático</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-solid-em-php-exemplo-pr%C3%A1tico/</link>
      <pubDate>Wed, 17 Dec 2025 17:35:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-solid-em-php-exemplo-pr%C3%A1tico/</guid>
      <description>&lt;p&gt;Os princípios SOLID são um conjunto de cinco diretrizes de design de software orientadas a objetos, criadas por &lt;strong&gt;Robert C. Martin&lt;/strong&gt; (também conhecido como Uncle Bob), que visam tornar o código mais &lt;strong&gt;flexível&lt;/strong&gt;, &lt;strong&gt;manutenível&lt;/strong&gt; e &lt;strong&gt;extensível&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;o-que-é-solid-&#34;&gt;&#xA;  O que é SOLID? 🧱&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#o-que-%c3%a9-solid-&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;O acrônimo &lt;strong&gt;SOLID&lt;/strong&gt; representa os cinco princípios:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;S - Single Responsibility Principle&lt;/strong&gt; (Princípio da Responsabilidade Única): Uma classe deve ter apenas uma razão para mudar, ou seja, uma única responsabilidade.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 Artisan: Reiniciando Workers do Supervisor no Laravel via docker</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-artisan-reiniciando-workers-do-supervisor-no-laravel/</link>
      <pubDate>Fri, 05 Dec 2025 16:51:00 +0000</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-artisan-reiniciando-workers-do-supervisor-no-laravel/</guid>
      <description>&lt;p&gt;Este guia detalha a criação de um comando personalizado no Laravel, que permite reiniciar workers específicos do Supervisor de forma rápida e segura, mesmo quando a aplicação roda em um container Docker. Incluímos também dicas essenciais para diagnóstico de permissões.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-passo-1-criação-do-comando-artisan&#34;&gt;&#xA;  1️⃣ Passo 1: Criação do Comando Artisan&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-passo-1-cria%c3%a7%c3%a3o-do-comando-artisan&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Vamos criar um comando que servirá como um wrapper para o utilitário de sistema &lt;code&gt;supervisorctl&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>🛒 Mini Projeto em PHP aplicando SOLID</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-mini-projeto-em-php-aplicando-solid/</link>
      <pubDate>Sun, 30 Nov 2025 10:32:00 -0300</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-mini-projeto-em-php-aplicando-solid/</guid>
      <description>&lt;h2 id=&#34;introdução&#34;&gt;&#xA;  Introdução&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#introdu%c3%a7%c3%a3o&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Os princípios do &lt;strong&gt;SOLID&lt;/strong&gt; são fundamentais para quem deseja escrever código orientado a objetos de forma clara, extensível e fácil de manter. Neste artigo, vamos construir &lt;strong&gt;um mini sistema de pedidos em PHP&lt;/strong&gt; aplicando cada um desses princípios. O objetivo é mostrar como sair de uma estrutura rígida e acoplada para uma arquitetura flexível e organizada.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;estrutura-do-projeto&#34;&gt;&#xA;  Estrutura do Projeto&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#estrutura-do-projeto&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Nosso sistema terá as seguintes responsabilidades:&lt;/p&gt;</description>
    </item>
    <item>
      <title>📘 Entendendo SOLID na prática com PHP</title>
      <link>https://tiagoscosta.tpps.com.br/posts/-tutorial-aplicando-solid-em-php/</link>
      <pubDate>Sun, 30 Nov 2025 09:28:00 -0300</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/-tutorial-aplicando-solid-em-php/</guid>
      <description>&lt;h2 id=&#34;introdução&#34;&gt;&#xA;  Introdução&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#introdu%c3%a7%c3%a3o&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;O acrônimo &lt;strong&gt;SOLID&lt;/strong&gt; representa cinco princípios fundamentais da programação orientada a objetos que ajudam a criar sistemas mais &lt;strong&gt;manuteníveis&lt;/strong&gt;, &lt;strong&gt;escaláveis&lt;/strong&gt; e &lt;strong&gt;flexíveis&lt;/strong&gt;. Esses princípios são:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;S&lt;/strong&gt;ingle Responsibility Principle (Princípio da Responsabilidade Única)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;O&lt;/strong&gt;pen/Closed Principle (Princípio Aberto/Fechado)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;L&lt;/strong&gt;iskov Substitution Principle (Princípio da Substituição de Liskov)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;I&lt;/strong&gt;nterface Segregation Principle (Princípio da Segregação de Interfaces)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;D&lt;/strong&gt;ependency Inversion Principle (Princípio da Inversão de Dependência)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Vamos ver exemplos práticos em PHP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>📝 Desmistificando o s3270: A Ponte Invisível para o Mainframe</title>
      <link>https://tiagoscosta.tpps.com.br/posts/desmistificando-o-s3270-a-ponte-invis%C3%ADvel-para-o-mainframe/</link>
      <pubDate>Wed, 26 Nov 2025 10:06:00 -0300</pubDate>
      <guid>https://tiagoscosta.tpps.com.br/posts/desmistificando-o-s3270-a-ponte-invis%C3%ADvel-para-o-mainframe/</guid>
      <description>&lt;p&gt;No mundo da modernização de sistemas, nem sempre é possível reescrever o código legado. Muitas das maiores instituições financeiras e seguradoras do mundo ainda rodam seus núcleos em mainframes IBM. O desafio surge quando precisamos conectar uma aplicação web moderna ou um script de automação a essas telas verdes antigas.&lt;/p&gt;&#xA;&lt;p&gt;É aqui que entra o &lt;strong&gt;s3270&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;o-que-é-o-s3270&#34;&gt;&#xA;  &lt;strong&gt;O que é o s3270?&lt;/strong&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#o-que-%c3%a9-o-s3270&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link para o cabeçalho&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link para o cabeçalho&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;O s3270 é um emulador de terminal &lt;strong&gt;scriptáve&lt;/strong&gt;l e &lt;strong&gt;headless&lt;/strong&gt; (sem monitor/interface gráfica) para sessões IBM 3270. Ele faz parte da suíte open-source &lt;strong&gt;x3270&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
