Alura > Cursos de Programação > Cursos de PHP > Conteúdos de PHP > Primeiras aulas do curso PHP e Clean Architecture: descomplicando arquitetura de software

PHP e Clean Architecture: descomplicando arquitetura de software

Conhecendo o sistema - Introdução

Sejam muito bem-vindos. Meu nome é Vinicius Dias, embora vocês não estejam me vendo vou ser o instrutor para guiar vocês nesse nosso estudo sobre arquitetura utilizando php.

Neste treinamento, que vai ser uma introdução ao conceito de arquitetura e como arquitetura pode modelar nossa aplicação, vamos começar falando sobre o que é o domínio da nossa aplicação. Vamos trabalhar com uma aplicação de alunos, onde podemos matricular alunos, um aluno pode indicar o outro, etc. E nessa aplicação vamos começar criando o que faz sentido. O aluno.

Vamos trabalhar com nosso domínio primeiro e com isso vamos entender o conceito de entidade, vamos avançar aprendendo o conceito de value object, ou objeto de valor. Vamos criar alguns desses value objects.

Falando sobre nosso domínio, não podia faltar o assunto sobre testes. Implementamos alguns poucos testes e vários outros vão ficar de desafio para você implementar durante o treinamento. Vamos ver como podemos dividir nossa aplicação em módulos, em camadas, e vamos praticar bastante isso, vamos colocar isso tudo na prática.

Vamos falar sobre serviços de domínio, serviços de infraestrutura, serviços de aplicação, use cases, como separar os pontos de acesso da nossa aplicação a partir de diferentes mecanismos de entrega. Como por exemplo linha de comando, web, API, mensageria, de onde quer que venha a informação vamos estar preparados para lidar com ela.

Quero deixar bem claro que tudo que eu falar durante este treinamento você não deve levar como regra, mas sim como sugestão. Não existe melhor ou pior forma quando estamos falando sobre arquitetura. Existe solução que é mais recomendada para determinados casos. Existem soluções mais recomendadas para outros casos. De novo, não tome nada do que eu falar como verdade absoluta e sim como uma sugestão, uma possível solução.

Durante este treinamento vou fazer vários desafios, várias propostas de questionamento, então este treinamento vai ser para você se perguntar em como você pode implementar determinadas coisas durante sua carreira no desenvolvimento, como você pode desenvolver melhor, como você pode modelar e arquitetar melhor sua aplicação.

Pela última vez vou falar aqui, nada do que eu falar é regra, são todas sugestões. Obviamente baseadas em estudos, obviamente baseadas em conceitos que já existem há algum tempo, mas conceitos podem ser revistos, revalidados, coisas mudam, principalmente em tecnologia.

Espero que você aproveite bastante esse treinamento, pratique e faça os exercícios que vou propor durante este treinamento. Caso qualquer dúvida fique nesse processo não hesite, você pode abrir uma dúvida no nosso fórum. Eu tento responder e interagir sempre que possível, pessoalmente. Quando não consigo nossa comunidade de alunos e moderadores é bem solicita, sempre tem alguém disposto a ajudar.

Mais uma vez, seja muito bem-vindo, espero que você aproveite bastante, e te vejo no próximo vídeo para começarmos a bater um papo sobre esse nosso curso.

Conhecendo o sistema - O que é arquitetura?

Bem-vindos de volta. Antes de começarmos a colocar a mão na massa, criar algum projeto propriamente dito, vamos falar um pouco sobre a necessidade de estudar o que vamos estudar.

Se você fez e espero que tenha feito, porque é um pré-requisito deste treinamento, o treinamento de MVC, você provavelmente ficou se perguntando várias coisas. Você provavelmente ficou com várias perguntas. Como por exemplo, se tenho uma regra de negócios complexa, essa regra de negócios fica no meu controller? Vai ficar dentro da minha camada model? A minha camada model é só de acesso a dados? É de regra de negócios? É só minha entidade? São meus repositórios? O que faz parte da camada model? O que é um serviço?

Você provavelmente tem muitas perguntas e neste treinamento você não vai ter todas as suas perguntas respondidas, mas você pelo menos vai entender um pouco melhor e saber fazer perguntas um pouco mais complexas. Durante este treinamento, vamos primeiramente entender como modelar uma aplicação, como fazer com que uma aplicação esteja um pouco mais organizada do ponto de vista do código, como fazemos para separar as partes do nosso código de forma que seja fácil manter, ler, estender.

Vamos começar a entender sobre alguns padrões arquiteturais, e não se atente a essa imagem agora, mas vamos ver um pouco mais sobre ela mais para a frente.

Vou pedir para vocês só focarem no ponto em que temos o domínio do negócio separado em um canto. Se pegarmos alguma outra imagem de algum outro modelo que vamos falar também temos de novo o nosso domínio sendo separado.

Aqui temos com outro nome, que foi dado nessa imagem de entidades, mas temos também nosso domínio separado.

Vamos começar a conversar sobre o que é domínio, o que é o domínio do nosso negócio, e além de falar sobre o que é vamos começar a separar o domínio de qualquer outra coisa, e vamos entender a motivação para fazer isso. Por que pode ser interessante separar o domínio da nossa aplicação de qualquer outra coisa, de detalhes da web, de detalhes de persistência, como banco de dados, arquivos e essas coisas, e conforme vamos avançando no treinamento vamos conhecendo padrões que nos ajudam a fazer isso, blocos de construção que vão ajudar a atingir nossos objetivos.

Basicamente o que vamos ver neste treinamento é uma forma de organizar nosso código melhor na prática, e sem utilizar definições pesquisadas na internet, sem utilizar definições complexas. Arquitetura de software é mais ou menos isso. É você modelar, organizar, criar um modelo, uma forma de organizar sua aplicação, seu código, suas classes, suas pastas, o que for, para que essa aplicação, que esse software, seja fácil de dar manutenção, seja fácil de estender, adicionar novas funcionalidades sem quebrar funcionalidades antigas.

Neste treinamento vamos ver bastante coisa, é um conteúdo bastante denso. Como já falei no vídeo anterior, espero que você já tenha os conhecimentos de solid bem fixados, conheça pelo menos alguns padrões de projeto, já tenha estudado sobre MVC, e a partir deste treinamento vamos treinar bastante coisa legal, vamos ver bastante coisa legal.

No próximo vídeo já começamos colocando a mão na massa criando um projeto.

Conhecendo o sistema - Preparando o ambiente

Bem-vindos de volta. Vamos criar nosso projeto para começarmos a colocar a mão na massa finalmente. Antes de qualquer coisa precisamos obviamente ter o php instalado, pelo menos na versão 7.4. Não estou com a última versão do PHP 7.4 aqui, mas pelo menos a 7.4.0 você precisa ter.

Se quando você estiver assistindo este treinamento já tiver sido lançada a versão 8 do php pode utilizar sem problema que tudo que vamos fazer aqui funciona no PHP 8 também.

Com o PHP instalado, também vamos precisar do composer. A versão do Composer não vai importar muito, mas sempre tenha ela atualizada também. E isso tudo já tratamos em treinamentos anteriores, então não vou mostrar como instalar nem nada do tipo.

A primeira coisa que vamos fazer é criar nosso famoso composer.json, aquele arquivo que indica como nosso projeto vai estar, quais dependências nosso projeto vai utilizar e como vamos definir o autoloader dele, tudo isso já tratamos em cursos anteriores. Para fazer isso, vamos em "arquitertura" > "New" > "File" e nomeamos de "composer.jason".

Criando nosso arquivo "composer.json" vou definir a chave autoload e dentro de autoload vou dizer que vou utilizar a psr-4 para isso. Vou definir meu name space raiz, você pode utilizar algum outro, vou utilizar "Alura\\Arquitetura\\". Esse name space raiz vai estar armazenado na pasta "src/".

{
    "autload": {
        "psr-4": {
            "Alura\\Arquitetura\\": "src/"
        }
    }
} 

Isso é tudo que precisamos por enquanto para começar nosso projeto. Com esse arquivo já definido, obviamente vou precisar da minha pasta "src", porque aqui dentro dessa pasta vão estar todo os arquivos do projeto. Então abrimos um novo diretório em "arquitetura" > "New" > "File" com o nome "src".

Com isso definido posso rodar o composer dumpautoload. Isso vai criar uma pasta "vendor" e aqui dentro tenho meu arquivo de "autoload.php". Esse arquivo é o ponto de entrada de qualquer aplicação php para você conseguir utilizar qualquer outra classe sem precisar ficar dando required. Nada novo até aqui, só criamos o projeto.

Recapitulando. Precisamos do PHP 7.4 no mínimo, precisamos do composer instalado, configuramos o autoloader e vamos agora finalmente colocar a mão na massa, começar a implementar algum código no nosso projeto. No próximo vídeo começamos a escrever código.

Sobre o curso PHP e Clean Architecture: descomplicando arquitetura de software

O curso PHP e Clean Architecture: descomplicando arquitetura de software possui 152 minutos de vídeos, em um total de 57 atividades. Gostou? Conheça nossos outros cursos de PHP em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda PHP acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas