PHPackages                             cristianp6/pdo-service-provider - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. cristianp6/pdo-service-provider

ActiveLibrary[Database &amp; ORM](/categories/database)

cristianp6/pdo-service-provider
===============================

A PDO database service provider for Silex with the ability to nest transactions

v0.8.0(10y ago)030MITPHP

Since Sep 4Pushed 10y ago1 watchersCompare

[ Source](https://github.com/cristianp6/PdoServiceProvider)[ Packagist](https://packagist.org/packages/cristianp6/pdo-service-provider)[ RSS](/packages/cristianp6-pdo-service-provider/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (7)Used By (0)

PdoServiceProvider
==================

[](#pdoserviceprovider)

a Simple PDO service provider for Silex

Installation
------------

[](#installation)

add this package to [Composer](https://getcomposer.org/) dependencies configuration:

```
php composer.phar require "cristianp6/pdo-silex-provider=~0.8"
```

Usage
-----

[](#usage)

- Configure only one database

use the `PdoServiceProvider` silex provider :

```
use Csanquer\Silex\PdoServiceProvider\Provider\PdoServiceProvider;
use Silex\Application;

$app = new Application();
$app->register(
    // you can customize services and options prefix with the provider first argument (default = 'pdo')
    new PdoServiceProvider('pdo'),
    array(
        'pdo.server'   => array(
            // PDO driver to use among : mysql, pgsql , oracle, mssql, sqlite, dblib
            'driver'   => 'mysql',
            'host'     => 'mysql',
            'dbname'   => 'rfactori',
            'port'     => 3306,
            'user'     => 'ger',
            'password' => 'GER',
        ),
        // optional PDO attributes used in PDO constructor 4th argument driver_options
        // some PDO attributes can be used only as PDO driver_options
        // see http://www.php.net/manual/fr/pdo.construct.php
        'pdo.options' => array(
            \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
        ),
        // optional PDO attributes set with PDO::setAttribute
        // see http://www.php.net/manual/fr/pdo.setattribute.php
        'pdo.attributes' => array(
            \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
        ),
    )
);

// get PDO connection
$pdo = $app['pdo'];
```

- Configure several databases

```
use Csanquer\Silex\PdoServiceProvider\Provider\PdoServiceProvider;
use Silex\Application;

$app = new Application();
$app->register(
    // use custom prefix for service and options
    // first PDO connection
    new PdoServiceProvider('pdo.db1'),
    array(
        // use previous custom prefix pdo.db1
        'pdo.db1.server' => array(
            // PDO driver to use among : mysql, pgsql , oracle, mssql, sqlite, dblib
            'driver'   => 'mysql',
            'host'     => '127.0.0.1',
            'dbname'   => 'db1',
            'port'     => 3306,
            'user'     => 'username',
            'password' => 'password',
        ),
        // optional PDO attributes used in PDO constructor 4th argument driver_options
        'pdo.db1.options' => array(
            \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
        ),
        // optional PDO attributes set with PDO::setAttribute
        'pdo.db1.attributes' => array(
            \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
        ),
    )
);

$app->register(
    // second PDO connection
    new PdoServiceProvider('pdo.db2'),
    array(
        'pdo.db2.server' => array(
            'driver' => 'sqlite',
            'path' => 'var/db/db2.sqlite',
        ),
    )
);

// get PDO connections
$db1Pdo = $app['pdo.db1'];
$db2Pdo = $app['pdo.db2'];
```

Transaction Usage
-----------------

[](#transaction-usage)

- Basic example on how to use transactions

```
$sth = $app['pdo']->prepare( $sql );
try {
    $success = $app['pdo']->transaction(function() use ($sth) {
        return $sth->execute();
    });

    if($success) {
        //committed
    } else {
        //rollback
    }

} catch(\PDOExecption $e) {
    $app['pdo']->rollBack();
    $result = $e->getMessage();
}
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 72.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~144 days

Recently: every ~112 days

Total

6

Last Release

3918d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/53147aa05537edf91ba5a50cb68b9a4c4d712a5fab72f0917120eb5dc664914a?d=identicon)[cristianp6](/maintainers/cristianp6)

---

Top Contributors

[![csanquer](https://avatars.githubusercontent.com/u/372677?v=4)](https://github.com/csanquer "csanquer (45 commits)")[![cristianp6](https://avatars.githubusercontent.com/u/233734?v=4)](https://github.com/cristianp6 "cristianp6 (17 commits)")

---

Tags

databasepdoservice providersilextransactions

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/cristianp6-pdo-service-provider/health.svg)

```
[![Health](https://phpackages.com/badges/cristianp6-pdo-service-provider/health.svg)](https://phpackages.com/packages/cristianp6-pdo-service-provider)
```

###  Alternatives

[doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.

9.7k578.4M5.6k](/packages/doctrine-dbal)[csanquer/pdo-service-provider

a PDO database service provider for silex

19199.0k](/packages/csanquer-pdo-service-provider)[tommyknocker/pdo-database-class

Framework-agnostic PHP database library with unified API for MySQL, MariaDB, PostgreSQL, SQLite, MSSQL, and Oracle. Query Builder, caching, sharding, window functions, CTEs, JSON, migrations, ActiveRecord, CLI tools, AI-powered analysis. Zero external dependencies.

845.7k](/packages/tommyknocker-pdo-database-class)[moriony/silex-mongo-provider

Mongo service provider for the Silex framwork.

118.5k](/packages/moriony-silex-mongo-provider)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
