Ashish Thakur
@ashish_thakur
@ashish_thakur | a_thakur
source: http://cdn4.zyxware.com/files/Migrating_your_Drupal_7_themes_to_Drupal_8.jpg
Dependency Injection is providing a component with its dependencies either through constructor injection, method calls or the setting of properties.
<?php
namespace Database;
class Database
{
protected $adapter;
public function __construct()
{
$this->adapter = new MySqlAdapter;
}
}
class MysqlAdapter {}
http://www.phptherightway.com/#dependency_injection
<?php
namespace Database;
class Database
{
protected $adapter;
public function __construct(MySqlAdapter $adapter)
{
$this->adapter = $adapter;
}
}
class MysqlAdapter {}
http://www.phptherightway.com/#dependency_injection
<?php namespace Database; class Database { protected $adapter; public function __construct() { $this->adapter = new MySqlAdapter; } } class MysqlAdapter {}
<?php namespace Database; class Database { protected $adapter; public function __construct(MySqlAdapter $adapter) { $this->adapter = $adapter; } } class MysqlAdapter {}
<?php
namespace Database;
class Database
{
protected $adapter;
public function __construct(AdapterInterface $adapter)
{
$this->adapter = $adapter;
}
}
interface AdapterInterface {}
class MysqlAdapter implements AdapterInterface {}
http://www.phptherightway.com/#dependency_injection
<?php
namespace Database;
class Database
{
protected $adapter;
public function __construct(AdapterInterface $adapter)
{
$this->adapter = $adapter;
}
}
<?php
namespace Database;
class Database
{
protected $adapter;
public function setDatabaseAdapter(AdapterInterface $adapter)
{
$this->adapter = $adapter;
}
}
<?php namespace Database; class Database { public $adapter; } $adapter = new MysqlAdapter(); $database->adapter = $adapter;
$adapter = new MysqlAdapter(); $database = new Database($adapter);
services:
d7.query_builder:
class: Doctrine\DBAL\Query\QueryBuilder
arguments: ['@doctrine.dbal.connection']
doctrine.dbal.connection:
class: Doctrine\DBAL\Connection
factory: ['Doctrine\DBAL\DriverManager', getConnection]
arguments: ['%connection_params%','@doctrine.dbal.config']
doctrine.dbal.config:
class: Doctrine\DBAL\Configuration
Lets hack and understand
@ashish_thakur | a_thakur | business@srijan.net