On this page
Adapters
AdapterAwareTrait
The trait Laminas\Db\Adapter\AdapterAwareTrait
, which provides implementation
for Laminas\Db\Adapter\AdapterAwareInterface
, and allowed removal of
duplicated implementations in several components of Laminas or in custom
applications.
The interface defines only the method setDbAdapter()
with one parameter for an
instance of Laminas\Db\Adapter\Adapter
:
public function setDbAdapter(\Laminas\Db\Adapter\Adapter $adapter) : self;
Basic Usage
Create Class and Add Trait
use Laminas\Db\Adapter\AdapterAwareTrait;
use Laminas\Db\Adapter\AdapterAwareInterface;
class Example implements AdapterAwareInterface
{
use AdapterAwareTrait;
}
Create and Set Adapter
Create a database adapter and set the adapter to the instance of the Example
class:
$adapter = new Laminas\Db\Adapter\Adapter([
'driver' => 'Pdo_Sqlite',
'database' => 'path/to/sqlite.db',
]);
$example = new Example();
$example->setAdapter($adapter);
AdapterServiceDelegator
The delegator
Laminas\Db\Adapter\AdapterServiceDelegator
can be used to set a database
adapter via the service manager of laminas-servicemanager.
The delegator tries to fetch a database adapter via the name
Laminas\Db\Adapter\AdapterInterface
from the service container and sets the
adapter to the requested service. The adapter itself must be an instance of
Laminas\Db\Adapter\Adapter
.
Integration for Mezzio and laminas-mvc based Applications
In a Mezzio or laminas-mvc based application the database adapter is already registered during the installation with the laminas-component-installer.
Create Class and Use Trait
Create a class and add the trait AdapterAwareTrait
.
use Laminas\Db\Adapter\Adapter;
use Laminas\Db\Adapter\AdapterInterface;
class Example implements AdapterAwareInterface
{
use AdapterAwareTrait;
public function getAdapter() : ?Adapter
{
return $this->adapter;
}
}
(A getter method is also added for demonstration.)
Create and Configure Service Manager
Create and configured the service manager:
use Interop\Container\ContainerInterface;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Db\Adapter\AdapterServiceDelegator;
use Laminas\Db\Adapter\AdapterAwareTrait;
use Laminas\Db\Adapter\AdapterAwareInterface;
$serviceManager = new Laminas\ServiceManager\ServiceManager([
'factories' => [
// Database adapter
AdapterInterface::class => static function(ContainerInterface $container) {
return new Laminas\Db\Adapter\Adapter([
'driver' => 'Pdo_Sqlite',
'database' => 'path/to/sqlite.db',
]);
}
],
'invokables' => [
// Example class
Example::class => Example::class,
],
'delegators' => [
// Delegator for Example class to set the adapter
Example::class => [
AdapterServiceDelegator::class,
],
],
]);
Get Instance of Class
Retrieving an instance
of the Example
class with a database adapter:
/** @var Example $example */
$example = $serviceManager->get(Example::class);
var_dump($example->getAdapter() instanceof Laminas\Db\Adapter\Adapter); // true
Concrete Implementations
The validators Db\RecordExists
and Db\NoRecordExists
implements the trait and the plugin manager of laminas-validator
includes the delegator to set the database adapter for both validators.