SlideShare a Scribd company logo
1 of 48
Download to read offline
Arquitetando sistemas
PHP utilizando boas
práticas de engenharia de
software
SEMANA DE INFORMÁTICA
EDUARDO CESAR
ARQUITETO DE SOFTWARE - ZARP
Software architecture research investigates
methods for determining how best to partition a
system, how components identify and
communicate with each other,how information is
communicated, how elements of a system can
evolve independently
ARQUITETURA DE
SOFTWARE
E
NEGÓCIO
LINGUAGEM UBÍQUA
ARQUITETURA EM CAMADAS
CONTEXTOS DELIMITADOS
ANTI-CORRUPTION LAYER
ENTENDENDO ARQUITETURA DE SOFTWARE
DE DENTRO PARA FORA
PADRÕES
ARQUITETURA EM CAMADAS
A criação de camadas é
uma das técnicas mais
comuns que os projetistas
de software usam para
quebrar em pedaços um
sistema complexo de
software...
Apresentação
Negócio
Persistência
Meios de comunicação
PROTOCOLOS
SÍNCRONOS OU ASSÍNCRONOS
WEB APPLICATIONS
Adotam algum modelo de arquitetura
em camadas, usualmente
MVC
MODEL
VIEW CONTROLLER
<?php
namespace AppModel;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
}
<?php
namespace AppHttpControllers;
use AppModelUser;
use AppHttpControllersController;
class UserController extends Controller
{
public function show()
{
return view('user.profile', ['users' => User::all()]);
}
}
<html>
<body>
<h1>Users</h1>
<?php
foreach ($users as $user)
{
echo $user->name;
}
?>
</body>
</html>
Manipulação de dados
ORM’s
Active Record
Data Mapper
Active Record
<?php
namespace AppModel;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
protected $table = ‘user’;
}
$user = new User();
$user->name = ‘Eduardo’;
$user->save();
$users = $user->all();
$user = $user->find(1);
Data Mapper
<?php
use DoctrineORMMapping as ORM;
/**
* @ORMEntity
* @ORMTable(name="products")
*/
class User
{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue
*/
public $id;
/**
* @ORMColumn(type="string")
*/
public $name;
}
<?php
$entityManager = EntityManager::create($conn, $config);
$user = new User();
$user->name = ‘Eduardo’;
$entityManager->persist($user);
$entityManager->flush();
$id = 1;
$user = $entityManager->find('User', $id);
$userRepository = $entityManager->getRepository('User');
$user = $userRepository->findAll();
WEB API
Também podem adotar algum modelo
arquitetural em camadas, mas o principal ponto
é na exposição de um serviço,
que pode ser feita via RPC ou REST
E se minha web application ou
web api precisar ser assíncrona?
MENSAGERIAS
FILAS
TÓPICOS
Para o LARAVEL
Para o SYMFONY
REAL TIME
AUTENTICAÇÃO E AUTORIZAÇÃO
LOGS
GERENCIE SUAS DEPENDÊNCIAS
OBRIGADO A TODOS!
EDUARDO CESAR
github.com/bolinha1
/in/eduardo-cesar-oliveira
eduardo.oliveira@zarpsystem.com.br
www.zarpsystem.com.br
ESTAMOS CONTRATANDO!!!

More Related Content

Similar to Arquitetando aplicações php

01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Lucas Furtado de Oliveira
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 
Engenharia de Software - Wikipedia
Engenharia de Software - WikipediaEngenharia de Software - Wikipedia
Engenharia de Software - WikipediaRobson Silva Espig
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorDaniel Brandão
 
Tecnologia badeada e MKicrofrontEnd e dotnet core
Tecnologia badeada e MKicrofrontEnd e dotnet coreTecnologia badeada e MKicrofrontEnd e dotnet core
Tecnologia badeada e MKicrofrontEnd e dotnet coreAlexandroAlves13
 
Unidade 1.1 Introdução ao Software
Unidade 1.1 Introdução ao SoftwareUnidade 1.1 Introdução ao Software
Unidade 1.1 Introdução ao SoftwareJuan Carlos Lamarão
 
Merlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginasMerlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginasMarcelo Mrack
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3Fabrício Basto
 
Plataformas técnicas
Plataformas técnicasPlataformas técnicas
Plataformas técnicasLau Yamazaki
 
Pre proposta trabalho final
Pre proposta trabalho finalPre proposta trabalho final
Pre proposta trabalho finalSergio Chaves
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
 
Arquitetura e design de software
Arquitetura e design de softwareArquitetura e design de software
Arquitetura e design de softwareVitor Castro
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetElvis Fusco
 
Programa Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. ProfissionalPrograma Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. ProfissionalFilipe Mendonça
 
Redes de comunicaçao
Redes de comunicaçaoRedes de comunicaçao
Redes de comunicaçaoRui Raposo
 

Similar to Arquitetando aplicações php (20)

01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Engenharia de software
Engenharia de software Engenharia de software
Engenharia de software
 
Engenharia de Software - Wikipedia
Engenharia de Software - WikipediaEngenharia de Software - Wikipedia
Engenharia de Software - Wikipedia
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: Desenvolvedor
 
Tecnologia badeada e MKicrofrontEnd e dotnet core
Tecnologia badeada e MKicrofrontEnd e dotnet coreTecnologia badeada e MKicrofrontEnd e dotnet core
Tecnologia badeada e MKicrofrontEnd e dotnet core
 
Unidade 1.1 Introdução ao Software
Unidade 1.1 Introdução ao SoftwareUnidade 1.1 Introdução ao Software
Unidade 1.1 Introdução ao Software
 
Merlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginasMerlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginas
 
.NET Micro Framework
.NET Micro Framework.NET Micro Framework
.NET Micro Framework
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3
 
Plataformas técnicas
Plataformas técnicasPlataformas técnicas
Plataformas técnicas
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Pre proposta trabalho final
Pre proposta trabalho finalPre proposta trabalho final
Pre proposta trabalho final
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Arquitetura e design de software
Arquitetura e design de softwareArquitetura e design de software
Arquitetura e design de software
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
 
Programa Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. ProfissionalPrograma Redes de Comunicação - Ens. Profissional
Programa Redes de Comunicação - Ens. Profissional
 
Redes de comunicaçao
Redes de comunicaçaoRedes de comunicaçao
Redes de comunicaçao
 

More from Eduardo Cesar

Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legadoEduardo Cesar
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosEduardo Cesar
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GOEduardo Cesar
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesEduardo Cesar
 
Mantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringMantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringEduardo Cesar
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPEduardo Cesar
 
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoEduardo Cesar
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webEduardo Cesar
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis LaravelEduardo Cesar
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoEduardo Cesar
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservicoEduardo Cesar
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPEduardo Cesar
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesEduardo Cesar
 

More from Eduardo Cesar (13)

Vida longa ao legado
Vida longa ao legadoVida longa ao legado
Vida longa ao legado
 
OOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodosOOP, e uma visão que está além de classes e métodos
OOP, e uma visão que está além de classes e métodos
 
Desbabravando linguagem GO
Desbabravando linguagem GODesbabravando linguagem GO
Desbabravando linguagem GO
 
Integrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservicesIntegrando aplicações, o que temos nas fronteiras dos microservices
Integrando aplicações, o que temos nas fronteiras dos microservices
 
Mantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoringMantendo a plenitude do seu novo legado com code-refactoring
Mantendo a plenitude do seu novo legado com code-refactoring
 
Desenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHPDesenvolvendor aplicações real time com PHP
Desenvolvendor aplicações real time com PHP
 
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicaçãoRefatoração e uma vida saudável para o desenvolvedor e para sua aplicação
Refatoração e uma vida saudável para o desenvolvedor e para sua aplicação
 
Explorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na webExplorando mecanismos autenticacao na web
Explorando mecanismos autenticacao na web
 
Manipulando JWT em apis Laravel
Manipulando JWT em apis LaravelManipulando JWT em apis Laravel
Manipulando JWT em apis Laravel
 
Porque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnicoPorque escolhemos Laravel: um ponto de vista além do técnico
Porque escolhemos Laravel: um ponto de vista além do técnico
 
Do monolito ao microservico
Do monolito ao microservicoDo monolito ao microservico
Do monolito ao microservico
 
Interagindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHPInteragindo com web services RPC, SOAP e REST utilizando PHP
Interagindo com web services RPC, SOAP e REST utilizando PHP
 
Uma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro servicesUma abordagem sobre arquiteturas de software Rest e Micro services
Uma abordagem sobre arquiteturas de software Rest e Micro services
 

Arquitetando aplicações php