Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sschonss/php-state-pattern
https://github.com/sschonss/php-state-pattern
Last synced: 18 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/sschonss/php-state-pattern
- Owner: sschonss
- Created: 2024-03-17T18:10:00.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-03-17T18:31:32.000Z (11 months ago)
- Last Synced: 2024-11-13T02:13:39.449Z (3 months ago)
- Language: PHP
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# State Pattern - PHP
## Introdução
Este é um exemplo de implementação do padrão de projeto State em PHP. O padrão State permite que um objeto altere seu comportamento quando seu estado interno muda.
Neste exemplo, modelamos um sistema de pedido de compra online, onde um pedido pode estar em três estados: Novo, Em Processamento e Concluído.
Estado do PedidoA interface EstadoPedido define os métodos que cada estado do pedido deve implementar.
~~~php
interface EstadoPedido {
public function processarPagamento(Pedido $pedido);
public function enviarConfirmacao(Pedido $pedido);
public function cancelarPedido(Pedido $pedido);
}
~~~## Implementação dos Estados
Há três classes que implementam a interface EstadoPedido: Novo, EmProcessamento e Concluido. Cada classe representa um estado específico do pedido e implementa os métodos de acordo com o comportamento esperado para esse estado.
Classe PedidoA classe Pedido representa um pedido em si e mantém uma referência para o estado atual do pedido. Ela delega as chamadas de método para o estado atual.
~~~php
class Pedido {
private $estado;// Métodos para definir e obter o estado, além de métodos para realizar ações no pedido.
}
~~~Exemplo de Uso
~~~php
// Criando um pedido
$pedido = new Pedido();// Processando pagamento
$pedido->processarPagamento();// Enviando confirmação
$pedido->enviarConfirmacao();// Cancelando pedido
$pedido->cancelarPedido();
~~~## Conclusão
O padrão de projeto State é útil quando você tem um objeto que pode mudar de comportamento dependendo de seu estado interno. Ele ajuda a manter o código mais organizado e flexível, permitindo fácil extensão para novos estados e evitando condicionais complexas.