Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
}
},
"require": {
"php": "~8.2.0 || ~8.3.0 || ~8.4.0",
"php-db/phpdb": "^0.2.1"
"php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
"php-db/phpdb": "^0.3.2"
},
"require-dev": {
"ext-mysqli": "*",
Expand Down
156 changes: 76 additions & 80 deletions composer.lock

Large diffs are not rendered by default.

12 changes: 0 additions & 12 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,6 @@ parameters:
count: 1
path: src/Container/DriverInterfaceFactoryFactory.php

-
message: '#^Cannot call static method createFromConfig\(\) on callable\.$#'
identifier: staticMethod.nonObject
count: 1
path: src/Container/MysqliDriverFactory.php

-
message: '#^Cannot call static method createFromConfig\(\) on callable\.$#'
identifier: staticMethod.nonObject
count: 1
path: src/Container/PdoDriverFactory.php

-
message: '#^Method PhpDb\\Adapter\\Profiler\\ProfilerInterface\:\:profilerFinish\(\) invoked with 1 parameter, 0 required\.$#'
identifier: arguments.count
Expand Down
36 changes: 9 additions & 27 deletions src/ConfigProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@
use PhpDb\Adapter\Platform\PlatformInterface;
use PhpDb\Adapter\Profiler;
use PhpDb\Container\AdapterAbstractServiceFactory;
use PhpDb\Container\AdapterManager;
use PhpDb\Container\ConnectionInterfaceFactoryFactoryInterface;
use PhpDb\Container\DriverInterfaceFactoryFactoryInterface;
use PhpDb\Container\MetadataFactory;
use PhpDb\Container\PlatformInterfaceFactoryFactoryInterface;
use PhpDb\Metadata\MetadataInterface;
use PhpDb\ResultSet;
Expand All @@ -28,8 +26,7 @@ final class ConfigProvider
public function __invoke(): array
{
return [
'dependencies' => $this->getDependencies(),
AdapterManager::class => $this->getAdapterManagerConfig(),
'dependencies' => $this->getDependencies(),
];
}

Expand All @@ -40,23 +37,6 @@ public function getDependencies(): array
AdapterAbstractServiceFactory::class,
],
'aliases' => [
MetadataInterface::class => MysqlMetadata::class,
],
'factories' => [
MysqlMetadata::class => MetadataFactory::class,
],
'delegators' => [
AdapterManager::class => [
Container\AdapterManagerDelegator::class,
],
],
];
}

public function getAdapterManagerConfig(): array
{
return [
'aliases' => [
'MySqli' => Driver\Mysqli\Mysqli::class,
'MySQLi' => Driver\Mysqli\Mysqli::class,
'Mysqli' => Driver\Mysqli\Mysqli::class,
Expand All @@ -74,29 +54,31 @@ public function getAdapterManagerConfig(): array
ResultSet\ResultSetInterface::class => ResultSet\ResultSet::class,
ConnectionInterfaceFactoryFactoryInterface::class => Container\ConnectionInterfaceFactoryFactory::class,
DriverInterfaceFactoryFactoryInterface::class => Container\DriverInterfaceFactoryFactory::class,
MetadataInterface::class => MysqlMetadata::class,
PlatformInterfaceFactoryFactoryInterface::class => Container\PlatformInterfaceFactoryFactory::class,
],
'factories' => [
'factories' => [
AdapterInterface::class => Container\AdapterFactory::class,
Driver\Mysqli\Mysqli::class => Container\MysqliDriverFactory::class,
Driver\Mysqli\Connection::class => Container\MysqliConnectionFactory::class,
Driver\Mysqli\Result::class => Container\MysqliResultFactory::class,
Driver\Mysqli\Statement::class => Container\MysqliStatementFactory::class,
Driver\Pdo\Pdo::class => Container\PdoDriverFactory::class,
Driver\Pdo\Connection::class => Container\PdoConnectionFactory::class,
Result::class => Container\PdoResultFactory::class,
MysqlMetadata::class => Container\MetadataInterfaceFactory::class,
PdoStatement::class => Container\PdoStatementFactory::class,
PlatformInterface::class => Container\PlatformInterfaceFactory::class,
Profiler\Profiler::class => InvokableFactory::class,
Result::class => Container\PdoResultFactory::class,
ResultSet\ResultSet::class => InvokableFactory::class,
],
'invokables' => [
'invokables' => [
Container\ConnectionInterfaceFactoryFactory::class
=> Container\ConnectionInterfaceFactoryFactory::class,
=> Container\ConnectionInterfaceFactoryFactory::class,
Container\DriverInterfaceFactoryFactory::class
=> Container\DriverInterfaceFactoryFactory::class,
=> Container\DriverInterfaceFactoryFactory::class,
Container\PlatformInterfaceFactoryFactory::class
=> Container\PlatformInterfaceFactoryFactory::class,
=> Container\PlatformInterfaceFactoryFactory::class,
],
];
}
Expand Down
20 changes: 8 additions & 12 deletions src/Container/AdapterFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
use PhpDb\Adapter\Exception\RuntimeException;
use PhpDb\Adapter\Platform\PlatformInterface;
use PhpDb\Adapter\Profiler\ProfilerInterface;
use PhpDb\Container\AdapterManager;
use PhpDb\ResultSet\ResultSetInterface;
use Psr\Container\ContainerInterface;

Expand All @@ -22,9 +21,6 @@ final class AdapterFactory
{
public function __invoke(ContainerInterface $container): AdapterInterface
{
/** @var AdapterManager $adapterManager */
$adapterManager = $container->get(AdapterManager::class);

/** @var array $config */
$config = $container->get('config');

Expand All @@ -38,39 +34,39 @@ public function __invoke(ContainerInterface $container): AdapterInterface
/** @var string $driver */
$driver = $dbConfig['driver'];

if (! $adapterManager->has($driver)) {
if (! $container->has($driver)) {
throw new ServiceNotFoundException(sprintf(
'Database driver "%s" is not registered in the adapter manager.',
$driver
));
}

/** @var DriverInterface|PdoDriverInterface $driverInstance */
$driverInstance = $adapterManager->get($driver);
$driverInstance = $container->get($driver);

if (! $adapterManager->has(PlatformInterface::class)) {
if (! $container->has(PlatformInterface::class)) {
throw new ServiceNotFoundException(sprintf(
'Database platform "%s" is not registered in the adapter manager.',
PlatformInterface::class
));
}

/** @var PlatformInterface $platformInstance */
$platformInstance = $adapterManager->get(PlatformInterface::class);
$platformInstance = $container->get(PlatformInterface::class);

if (! $adapterManager->has(ResultSetInterface::class)) {
if (! $container->has(ResultSetInterface::class)) {
throw new ServiceNotFoundException(sprintf(
'ResultSet "%s" is not registered in the adapter manager.',
ResultSetInterface::class
));
}

/** @var ResultSetInterface $resultSetInstance */
$resultSetInstance = $adapterManager->get(ResultSetInterface::class);
$resultSetInstance = $container->get(ResultSetInterface::class);

/** @var ProfilerInterface|null $profilerInstanceOrNull */
$profilerInstanceOrNull = $adapterManager->has(ProfilerInterface::class)
? $adapterManager->get(ProfilerInterface::class)
$profilerInstanceOrNull = $container->has(ProfilerInterface::class)
? $container->get(ProfilerInterface::class)
: null;

return new Adapter(
Expand Down
28 changes: 0 additions & 28 deletions src/Container/AdapterManagerDelegator.php

This file was deleted.

3 changes: 1 addition & 2 deletions src/Container/ConnectionInterfaceFactoryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
use PhpDb\Adapter\Mysql\Container\PdoConnectionFactory;
use PhpDb\Adapter\Mysql\Driver\Mysqli\Mysqli;
use PhpDb\Adapter\Mysql\Driver\Pdo\Pdo;
use PhpDb\Container\AdapterManager;
use PhpDb\Container\ConnectionInterfaceFactoryFactoryInterface as FactoryFactoryInterface;
use Psr\Container\ContainerInterface;
use RuntimeException;
Expand All @@ -29,7 +28,7 @@ public function __invoke(
$requestedName
));
}
$adapterServices = $container->get('config')[AdapterManager::class];
$adapterServices = $container->get('config');
$configuredDriver = $adapterConfig[$requestedName]['driver'];
if (array_key_exists($configuredDriver, $adapterServices['aliases'])) {
$aliasTo = $adapterServices['aliases'][$configuredDriver];
Expand Down
3 changes: 1 addition & 2 deletions src/Container/DriverInterfaceFactoryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace PhpDb\Adapter\Mysql\Container;

use PhpDb\Container\AdapterManager;
use PhpDb\Container\DriverInterfaceFactoryFactoryInterface as FactoryFactoryInterface;
use Psr\Container\ContainerInterface;
use RuntimeException;
Expand All @@ -24,7 +23,7 @@ public function __invoke(
$requestedName
));
}
$adapterServices = $container->get('config')[AdapterManager::class];
$adapterServices = $container->get('config');

$configuredDriver = $adapterConfig[$requestedName]['driver'];
$aliasTo ??= $adapterServices['aliases'][$configuredDriver] ?? $configuredDriver;
Expand Down
19 changes: 19 additions & 0 deletions src/Container/MetadataInterfaceFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);

namespace PhpDb\Adapter\Mysql\Container;

use PhpDb\Adapter\AdapterInterface;
use PhpDb\Adapter\Mysql\Metadata\Source\MysqlMetadata;
use PhpDb\Metadata\MetadataInterface;
use Psr\Container\ContainerInterface;

final class MetadataInterfaceFactory
{
public function __invoke(ContainerInterface $container): MetadataInterface
{
$adapterInterface = $container->get(AdapterInterface::class);
return new MysqlMetadata($adapterInterface);
}
}
3 changes: 1 addition & 2 deletions src/Container/MysqliConnectionFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@

namespace PhpDb\Adapter\Mysql\Container;

use Laminas\ServiceManager\Factory\FactoryInterface;
use PhpDb\Adapter\Driver\ConnectionInterface;
use PhpDb\Adapter\Mysql\Driver\Mysqli\Connection;
use Psr\Container\ContainerInterface;

final class MysqliConnectionFactory implements FactoryInterface
final class MysqliConnectionFactory
{
public function __invoke(
ContainerInterface $container,
Expand Down
18 changes: 6 additions & 12 deletions src/Container/MysqliDriverFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,12 @@

use PhpDb\Adapter\Driver;
use PhpDb\Adapter\Mysql\Driver\Mysqli;
use PhpDb\Container\AdapterManager;
use Psr\Container\ContainerInterface;

final class MysqliDriverFactory
{
public function __invoke(ContainerInterface $container): Driver\DriverInterface&Mysqli\Mysqli
{
/** @var AdapterManager $adapterManager */
$adapterManager = $container->get(AdapterManager::class);

/** @var array $config */
$config = $container->get('config');

Expand All @@ -26,13 +22,13 @@ public function __invoke(ContainerInterface $container): Driver\DriverInterface&
$options = $dbConfig['options'] ?? [];

/** @var Driver\ConnectionInterface&Mysqli\Connection $connectionInstance */
$connectionInstance = $adapterManager->get(Mysqli\Connection::class);
$connectionInstance = $container->get(Mysqli\Connection::class);

/** @var Driver\StatementInterface&Mysqli\Statement $statementInstance */
$statementInstance = $adapterManager->get(Mysqli\Statement::class);
$statementInstance = $container->get(Mysqli\Statement::class);

/** @var Driver\ResultInterface&Mysqli\Result $resultInstance */
$resultInstance = $adapterManager->get(Mysqli\Result::class);
$resultInstance = $container->get(Mysqli\Result::class);

return new Mysqli\Mysqli(
$connectionInstance,
Expand All @@ -46,10 +42,8 @@ public static function createFromConfig(
ContainerInterface $container,
string $requestedName,
): Driver\DriverInterface&Mysqli\Mysqli {
/** @var AdapterManager $adapterManager */
$adapterManager = $container->get(AdapterManager::class);
$connectionFactory = (
$adapterManager->get(ConnectionInterfaceFactoryFactory::class)
$container->get(ConnectionInterfaceFactoryFactory::class)
)($container, $requestedName);
/** @var array $config */
$config = $container->get('config');
Expand All @@ -60,8 +54,8 @@ public static function createFromConfig(

return new Mysqli\Mysqli(
$connectionFactory::createFromConfig($container, $requestedName),
$adapterManager->get(Mysqli\Statement::class),
$adapterManager->get(Mysqli\Result::class),
$container->get(Mysqli\Statement::class),
$container->get(Mysqli\Result::class),
$adapterConfig['options'] ?? []
);
}
Expand Down
19 changes: 6 additions & 13 deletions src/Container/PdoDriverFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,20 @@
use PhpDb\Adapter\Driver\StatementInterface;
use PhpDb\Adapter\Mysql\Driver\Pdo\Connection;
use PhpDb\Adapter\Mysql\Driver\Pdo\Pdo as PdoDriver;
use PhpDb\Container\AdapterManager;
use Psr\Container\ContainerInterface;

final class PdoDriverFactory
{
public function __invoke(ContainerInterface $container): PdoDriverInterface&PdoDriver
{
/** @var AdapterManager $adapterManager */
$adapterManager = $container->get(AdapterManager::class);

/** @var ConnectionInterface&Connection $connectionInstance */
$connectionInstance = $adapterManager->get(Connection::class);
$connectionInstance = $container->get(Connection::class);

/** @var StatementInterface&Statement $statementInstance */
$statementInstance = $adapterManager->get(Statement::class);
$statementInstance = $container->get(Statement::class);

/** @var ResultInterface&Result $resultInstance */
$resultInstance = $adapterManager->get(Result::class);

$resultInstance = $container->get(Result::class);
return new PdoDriver(
$connectionInstance,
$statementInstance,
Expand All @@ -42,10 +37,8 @@ public static function createFromConfig(
ContainerInterface $container,
string $requestedName,
): PdoDriverInterface&PdoDriver {
/** @var AdapterManager $adapterManager */
$adapterManager = $container->get(AdapterManager::class);
$connectionFactory = (
$adapterManager->get(ConnectionInterfaceFactoryFactory::class)
$container->get(ConnectionInterfaceFactoryFactory::class)
)($container, $requestedName);
/** @var array $config */
$config = $container->get('config');
Expand All @@ -60,10 +53,10 @@ public static function createFromConfig(
$connectionInstance = $connectionFactory::createFromConfig($container, $requestedName);

/** @var StatementInterface&Statement $statementInstance */
$statementInstance = $adapterManager->get(Statement::class);
$statementInstance = $container->get(Statement::class);

/** @var ResultInterface&Result $resultInstance */
$resultInstance = $adapterManager->get(Result::class);
$resultInstance = $container->get(Result::class);

return new PdoDriver(
$connectionInstance,
Expand Down
Loading