Skip to content

Commit 9d63242

Browse files
committed
Template method example
1 parent b667498 commit 9d63242

14 files changed

+701
-0
lines changed

TemplateMethod/composer.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"autoload": {
3+
"psr-4": {
4+
"Template\\": "src"
5+
}
6+
}
7+
}

TemplateMethod/index.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
use Template\Bike;
4+
use Template\Car;
5+
6+
require 'vendor/autoload.php';
7+
8+
//(new Bike())->make();
9+
(new Car())->make();

TemplateMethod/src/Bike.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
4+
namespace Template;
5+
6+
7+
class Bike extends Vehicle
8+
{
9+
10+
protected function addEngine()
11+
{
12+
echo "Bike engine \n";
13+
14+
return $this;
15+
}
16+
17+
protected function addWheel()
18+
{
19+
echo 2;
20+
21+
return $this;
22+
}
23+
}

TemplateMethod/src/Car.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
4+
namespace Template;
5+
6+
7+
class Car extends Vehicle
8+
{
9+
10+
protected function addEngine()
11+
{
12+
echo "Car engine \n";
13+
14+
return $this;
15+
}
16+
17+
protected function addWheel()
18+
{
19+
echo 4;
20+
21+
return $this;
22+
}
23+
}

TemplateMethod/src/Vehicle.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
4+
namespace Template;
5+
6+
7+
abstract class Vehicle
8+
{
9+
public function make()
10+
{
11+
return $this
12+
->start()
13+
->gearUp()
14+
->gearDown()
15+
->stop()
16+
->addEngine()
17+
->addWheel();
18+
}
19+
20+
protected function start()
21+
{
22+
echo "staring engine \n";
23+
24+
return $this;
25+
}
26+
27+
protected function gearUp()
28+
{
29+
echo "gear up \n";
30+
31+
return $this;
32+
}
33+
34+
protected function gearDown()
35+
{
36+
echo "gear down \n";
37+
38+
return $this;
39+
}
40+
41+
protected function stop()
42+
{
43+
echo "stopping engine \n";
44+
45+
return $this;
46+
}
47+
48+
protected abstract function addEngine();
49+
50+
protected abstract function addWheel();
51+
}

TemplateMethod/vendor/autoload.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
// autoload.php @generated by Composer
4+
5+
require_once __DIR__ . '/composer/autoload_real.php';
6+
7+
return ComposerAutoloaderInit77530c3e03ec4fb660a79e08f75097ff::getLoader();

0 commit comments

Comments
 (0)