Dependency inversion trong php và laravel

04/01/2022   Laravel
Dependency inversion trong php và laravel
1. Dependency inversion là gì
- Dependency inversion là một nguyên tắc lập trình
- Inversion of control (IoC) == dependency inversion
- Dependency injection (DI) là một design partern dựa theo dependency inversion
2. Dependency inversion trong PHP
============================
interface Database{
public function connectToDatabase();
}
class MySQLConnection implements Database{
public function connectToDatabase(){
return 'Mysql';
}
}
class MongoDBConnection implements Database{
public function connectToDatabase(){
return 'Mongo';
}
}
// using Mysql or Mongo
class UserDB {
private $dbConnection;
public function __construct(Database $dbConnection){ //preresent for objects
$this->dbConnection = $dbConnection->connectToDatabase();
echo $this->dbConnection.'<br>';
}
}
$mySlq=new MySQLConnection();
$mongo=new MongoDBConnection();
$n=new UserDB($mongo);
============================
3. Dependency inversion trong laravel
============================
interface CarInterface {
public function start();
}
class Subaru implements CarInterface {
public function start() {
echo 'Subaru start'.'<br>';
}
}
class Porche implements CarInterface {
public function start() {
echo 'Porche start'.'<br>';
}
}
// laravel bind
App::bind('CarInterface', 'Porche');
// or: App::bind('CarInterface', 'Subaru');
Route::get('/', function(){
// laravel resolve
$car = App::make('CarInterface');
$car->start();
});
============================
Cám ơn

