Skip to content

Instantly share code, notes, and snippets.

@olehi94
Last active January 9, 2019 15:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save olehi94/34351f3b999de1e9aded35e03ac54881 to your computer and use it in GitHub Desktop.
Save olehi94/34351f3b999de1e9aded35e03ac54881 to your computer and use it in GitHub Desktop.
Dependency Injection.
<?php
namespace DesignPatterns\Structural\DependencyInjection;
/**
* Class DatabaseConfiguration
*
* @package DesignPatterns\Structural\DependencyInjection
*/
class DatabaseConfiguration {
/**
* @var string
*/
private $host;
/**
* @var int
*/
private $port;
/**
* @var string
*/
private $username;
/**
* @var string
*/
private $password;
/**
* DatabaseConfiguration constructor.
*
* @param string $host
* @param int $port
* @param string $username
* @param string $password
*/
public function __construct(string $host, int $port, string $username, string $password) {
$this->host = $host;
$this->port = $port;
$this->username = $username;
$this->password = $password;
}
/**
* @return string
*/
public function getHost(): string {
return $this->host;
}
/**
* @return int
*/
public function getPort(): int {
return $this->port;
}
/**
* @return string
*/
public function getUsername(): string {
return $this->username;
}
/**
* @return string
*/
public function getPassword(): string {
return $this->password;
}
}
<?php
namespace DesignPatterns\Structural\DependencyInjection;
/**
* Class DatabaseConnection
*
* @package DesignPatterns\Structural\DependencyInjection
*/
class DatabaseConnection {
/**
* @var DatabaseConfiguration
*/
private $configuration;
/**
* DatabaseConnection constructor.
*
* @param \DesignPatterns\Structural\DependencyInjection\DatabaseConfiguration $config
*/
public function __construct(DatabaseConfiguration $config) {
$this->configuration = $config;
}
/**
* @return string
*/
public function getDsn(): string {
return sprintf(
'%s:%s@%s:%d',
$this->configuration->getUsername(),
$this->configuration->getPassword(),
$this->configuration->getHost(),
$this->configuration->getPort()
);
}
}
<?php
namespace DesignPatterns\Structural\DependencyInjection;
require_once 'DatabaseConfiguration.php';
require_once 'DatabaseConnection.php';
$dbconfig = new DatabaseConfiguration('localhost', '3306', 'root', 'root');
$dbconnection = new DatabaseConnection($dbconfig);
$test = $dbconnection->getDsn();
var_dump($test);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment