-
Notifications
You must be signed in to change notification settings - Fork 8
/
ChicagoPizzaStore.php
39 lines (35 loc) · 1.24 KB
/
ChicagoPizzaStore.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
declare(strict_types = 1);
namespace Maksi\HeadFirstDesignPattern\Factory\PizzaFactoryMethod;
use Maksi\HeadFirstDesignPattern\Factory\PizzaFactoryMethod\ChicagoPizza\ChicagoStyleCheesePizza;
use Maksi\HeadFirstDesignPattern\Factory\PizzaFactoryMethod\ChicagoPizza\ChicagoStyleClamPizza;
use Maksi\HeadFirstDesignPattern\Factory\PizzaFactoryMethod\ChicagoPizza\ChicagoStylePepperoniPizza;
use Maksi\HeadFirstDesignPattern\Factory\PizzaFactoryMethod\ChicagoPizza\ChicagoStyleVeggiePizza;
/**
* Class ChicagoPizzaStore
*
* @package Maksi\HeadFirstDesignPattern\Factory\PizzaFactoryMethod
*/
class ChicagoPizzaStore extends PizzaStore
{
/**
* @param string $item
*
* @return Pizza
* @throws CreatePizzaException
*/
public function createPizza(string $item): Pizza
{
switch ($item) {
case 'cheese':
return new ChicagoStyleCheesePizza();
case 'veggie':
return new ChicagoStyleVeggiePizza();
case 'clam':
return new ChicagoStyleClamPizza();
case 'pepperoni':
return new ChicagoStylePepperoniPizza();
}
throw new CreatePizzaException('Pizza type: ' . $item . ' is not support');
}
}