Skip to content

Commit f7e8067

Browse files
committed
Implementation
1 parent 5f4fb23 commit f7e8067

7 files changed

+102
-1
lines changed

composer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"psr-4": {
77
"App\\": "./src",
88
"Properties\\": "./src/Properties",
9-
"LateStatic\\": "./src/LateStatic"
9+
"LateStatic\\": "./src/LateStatic",
10+
"Db\\": "./src/Database"
1011
}
1112
}
1213
}

src/Database/Connection.php

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Db;
4+
use Db\Drivers\DatabaseDriver;
5+
6+
7+
class Connection
8+
{
9+
private $driver;
10+
11+
/**
12+
* Connection constructor.
13+
*/
14+
public function __construct(DatabaseDriver $driver)
15+
{
16+
$this->driver = $driver;
17+
}
18+
19+
public function getDriver()
20+
{
21+
return $this->driver->getName();
22+
}
23+
24+
}
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace Db\Drivers;
4+
5+
6+
abstract class DatabaseDriver
7+
{
8+
final public function getName()
9+
{
10+
//TODO
11+
}
12+
}

src/Database/Drivers/MySql.php

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace Db\Drivers;
4+
5+
class MySql
6+
{
7+
8+
}

src/Database/Drivers/Oracle.php

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace Db\Drivers;
4+
5+
class Oracle
6+
{
7+
8+
}

src/Database/PersistentConnection.php

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Db;
4+
5+
use Db\Drivers\DatabaseDriver;
6+
7+
class PersistentConnection extends Connection
8+
{
9+
10+
public function __construct(DatabaseDriver $driver)
11+
{
12+
$this->type = 'Persistent';
13+
}
14+
15+
}

tests/ConnectionTest.php

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
use PHPUnit\Framework\TestCase;
4+
use Db\Connection;
5+
use Db\PersistentConnection;
6+
use Db\Drivers\MySql;
7+
use Db\Drivers\Oracle;
8+
9+
class ConnectionTest extends TestCase
10+
{
11+
public function test_if_mysql_connection_is_established()
12+
{
13+
$connection = new Connection(new MySql);
14+
$driver = $connection->getDriver();
15+
$this->assertEquals('Connected to: Db\Drivers\MySql', $driver);
16+
}
17+
18+
public function test_if_oracle_connection_is_established()
19+
{
20+
$connection = new Connection(new Oracle);
21+
$driver = $connection->getDriver();
22+
$this->assertEquals('Connected to: Db\Drivers\Oracle', $driver);
23+
}
24+
25+
public function test_if_child_connection_works()
26+
{
27+
$connection = new PersistentConnection(new MySql);
28+
$driver = $connection->getDriver();
29+
$this->assertEquals('Connected to: Db\Drivers\MySql', $driver);
30+
$this->assertEquals('Persistent', $connection->getType());
31+
}
32+
33+
}

0 commit comments

Comments
 (0)