Имеет ли смысл абстрагировать обработку базы данных теперь, когда у нас есть PDO? - PullRequest
1 голос
/ 05 января 2012

Я играл с созданием класса абстракции базы данных в учебных целях, где вы можете создать несколько соединений с базами данных, для которых у вас есть драйверы, выполнив что-то вроде:

//Create multiple database connections
$db1 = new DatabaseFactory("MySQL","root","","localhost");
$db2 = new DatabaseFactory("MySQL","root","","localhost");

или ...

$db = new DatabaseFactory("SQLite");

Но я задумался над этим, и если вам не нужно управлять несколькими соединениями с заводским объектом, действительно ли не нужно что-то подобное с появлением правильного PDO?

Мой вопрос, как вы думаете, полезно ли иметь дополнительные уровни абстракции для PDO и почему?

Ответы [ 2 ]

1 голос
/ 05 января 2012

Если рассматривать исключительно абстракцию операций на уровне базы данных, а не такие вещи, как ORM, все еще существует проблема поддержки SQL между различными базами данных.

Например, сравнивая SQLite, Postgre и MySQL, все они поддерживаютбольшая часть одного и того же синтаксиса, но есть также различные различия между группами.

PDO не предпринимает никаких мер, чтобы абстрагироваться от различий в поддержке SQL между платформами.

Есть также некоторые другиевещи, которые можно спрятать, используя другой слой.Однако, немного ли это выполнимо или нет, немного сомнительно.Рассмотрим, например, попытку использовать программное обеспечение для эмуляции проверок внешнего ключа в SQLite или чем-то подобном.

0 голосов
/ 05 января 2012

Хотя PDO является большим улучшением по сравнению со старым пакетом функций mysql, он все еще является API низкого уровня для доступа к базе данных.

Так что да, для большинства ситуаций все же имеет смысл обернуть вокруг него API более высокого уровня.

Например, высокоуровневый API-интерфейс можно использовать для практически невозможной атаки SQL-инъекцией.

...