rishatss
@rishatss
Simple Developer ^)

Как реализовать интерфейс подключения к sqlite?

Добрый день господа.
Пытаюсь реализовать подключение к базе данных sqlite и сделать create в ней.
Тут такая задачка, именно на ООП, нужно наследовать интерфейс и в классе его реализовать.

Реализуйте интерфейс App\DDLManagerInterface в классе App\DDLManager

DDLManagerInterface
<?php

namespace App;

interface DDLManagerInterface
{
    public function __construct($dsn, $user = null, $pass = null);

    public function createTable($table, array $params);
}


DDLManager
<?php

namespace App;

class DDLManager implements DDLManagerInterface
{
    private $pdo;

    
    public function __construct($dsn, $user = null, $pass = null)
    {
        
    }

    public function createTable($table, array $params)
    {
        
    }
    

    public function getConnection()
    {
        return $this->pdo;
    }
}


Пример:
//Пример использования:

$dsn = 'sqlite::memory:';
$ddl = new DDLManager($dsn);

$ddl->createTable('users', [
    'id' => 'integer',
    'name' => 'string'
]);
Получившийся запрос в базу:

CREATE TABLE users (
    id integer,
    name string
);


С MySQL не вызывало вопросов. А вот sqlite как-то странно дается. В документации работает через пути и так далее. А тут иной образ :(
И правильно ли я начал реализовывать интерфейсы в классе? Или у меня траблы с ООП.
  • Вопрос задан
  • 311 просмотров
Решения вопроса 1
Falseclock
@Falseclock
решаю нестандартные задачи
Не понял на счет путей и что не работает, но касательно ООП пара замечаний:

1. Я бы в интерфейсе не указывал бы конструктор. Потому что это помешает универсальности, если вы в будущем захотите расширить функционал общего класса.
2. Сам DDLManager должен расширять функционал абстрактного класса. Опять же к вопросу расширяемости и универсальности.
3. Сам конечный драйвер должен содержать только специфичные методы и переменные класса.

Вот пример абстрактного класса https://github.com/Falseclock/dbd-php/blob/master/...
Вот сам интерфейс https://github.com/Falseclock/dbd-php/blob/master/...
А вот и драйвер https://github.com/Falseclock/dbd-php/blob/master/...

Благодаря универсальности я без особых проблем создал помимо SQL драйвера, еще и OData драйвер
https://github.com/Falseclock/dbd-php/blob/master/...
А на основе него драйвер подключения к данным 1С https://github.com/Falseclock/dbd-php/blob/master/...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект