Skip to content

Instantly share code, notes, and snippets.

@ksmylmz
Last active May 19, 2021 06:26
Show Gist options
  • Save ksmylmz/d8561b7814b1f9e130c412679ae11222 to your computer and use it in GitHub Desktop.
Save ksmylmz/d8561b7814b1f9e130c412679ae11222 to your computer and use it in GitHub Desktop.
adapter design pattern
<?php
////Pusedio kodlar
class BusinessLayer
{
public function ManageProduct()
{
////Myslq Server Kullanmak istediğimizde
$productManager = new ProductManager( new MysqlAdapter());
$productManager->getData($query,$params);
$productManager->insert($query,$params);
///MongoDB Kullanmak istediğimizde
$productManager = new ProductManager( new MongoAdapter());
$productManager->getData($query,$params);
$productManager->insert($query,$params);
}
}
class ProductManager
{
private IDatabase $DataAccessLayer;
function __construct(IDatabase $DataAccessLayer)
{
$this->$DataAccessLayer = $DataAccessLayer;
}
}
interface IDatabase
{
public function getData($query,$parameters);
public function insertData($query,$parameters);
public function updateData($query,$parameters);
public function deleteData($query,$parameters);
}
class MysqlAdapter implements IDatabase
{
public function getData($query,$parameters)
{
return DB::select($query,$parameters);
}
public function insertData($query,$parameters)
{
return DB::insert($query,$parameters);
}
public function updateData($query,$parameters)
{
return DB::update($query,$parameters);
}
public function deleteData($query,$parameters)
{
return DB::delete($query,$parameters);
}
}
class MongoAdapter implements IDatabase
{
public function getData($query,$parameters)
{
return Mongo::select($query,$parameters);
}
public function insertData($query,$parameters)
{
return Mongo::insert($query,$parameters);
}
public function updateData($query,$parameters)
{
return Mongo::update($query,$parameters);
}
public function deleteData($query,$parameters)
{
return Mongo::delete($query,$parameters);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment