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!

Plus

De
R$ 1.800
por
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

Matricule-se

Pro

De
R$ 2.400
por
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, a inteligência artificial da Alura

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

Matricule-se

Ultra

12X
R$209
à vista R$2.508
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, com mensagens ILIMITADAS

    Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.

  • Luri Vision, a IA que enxerga suas dúvidas

    Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

  • 6 Ebooks da Casa do Código

    Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas