Я занимаюсь дизайном слоев приложения. В основном то, что я до сих пор:
Мое приложение
Реализация
Источник данных
Уровень данных
interface DSOps
{
/*
* @return array
*/
function read($sql);
/*
* @return array
*/
function readAll($sql);
/*
* @return boolean
*/
function save($sql);
/*
* @return boolean
*/
function delete($sql);
}
use PDO;
class DSSql implements DSOps
{
private $bd;
public function __construct( PDO $bd)
{
$this->bd = $bd;
}
public function read($sql)
{
$stmt=$this->bd->prepare($sql);
$stmt->execute();
$response = $stmt->fetch(PDO::FETCH_ASSOC);
return $response;
}
public function readAll($sql)
{
$stmt=$this->bd->prepare($sql);
$stmt->execute();
$response = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $response;
}
public function save($sql, $params)
{
$stmt=$this->bd->prepare($sql);
return $stmt->execute($params);
}
public function borrar($sql, $params)
{
$stmt=$this->bd->prepare($sql);
return $stmt->execute($params);
}
}
Хранилища:
interface QueryClients
{
/*
* @return Client
*/
public function searchById($id);
/*
* @return array()
*/
public function searchAll();
/*
* @return int
*/
public function count();
}
class RepoClients implements QueryClients
{
private $ds;
public function __construct(DSOps $_ds)
{
$this->ds = $_ds;
}
/*
* @return array
*/
public function searchById($id)
{
$sql = " SELECT * FROM clients WHERE id=$id;";
$response=$this->ds->read($sql);
return $response;
}
/*
* @return array()
*/
public function searchAll()
{
$sql = " SELECT * FROM clients; ";
$response=$this->searchAll($sql);
return $response;
}
....
}
У меня есть несколько модулей, которые реализуют один и тот же дизайн.
При реализации этих проектов у меня возникают следующие сомнения:
Задача ещё не решена.
Других решений пока нет …