caridea/dao

A shrimp of a DAO support library

3.0.0 2018-01-29 00:11 UTC

This package is not auto-updated.

Last update: 2024-03-16 16:09:14 UTC


README

Caridea is a miniscule PHP application library. This shrimpy fellow is what you'd use when you just want some helping hands and not a full-blown framework.

This is its Data Access Object support component. You can use these classes to support DAOs that you write.

Packagist Build Status Scrutinizer Code Quality Code Coverage Documentation Status

Installation

You can install this library using Composer:

$ composer require caridea/dao
  • The master branch (version 3.x) of this project requires PHP 7.1 and depends on caridea/event.
  • Version 2.x of this project requires PHP 7.0 and depends on caridea/event.

Compliance

Releases of this library will conform to Semantic Versioning.

Our code is intended to comply with PSR-1, PSR-2, and PSR-4. If you find any issues related to standards compliance, please send a pull request!

Documentation

Features

We provide a mechanism to translate vendor-specific exceptions (right now, MongoDB and Doctrine exceptions) into a standard exception hierarchy.

  • Conflicting – An exception for concurrency failures.
  • Inoperable – An exception for invalid API usage and configuration problems.
  • Locked – An exception for unwritable records.
  • Unreachable – An exception for connection problems.
  • Unretrievable – An exception for unexpected results, for instance no results or too many results.
  • Violating – An exception for constraint violations.
    • Duplicative – An exception for unique constraint violations.
  • When all else fails, there's Generic.

We also provide abstract DAOs that allow you to make calls against your persistence API and have exceptions translated automatically.

class MyDao extends \Caridea\Dao\MongoDb
{
    public function create($record)
    {
        $this->logger->info("Creating the record");
        $this->doExecute(function ($manager, $collection) use ($record) {
            $bulk = new \MongoDB\Driver\BulkWrite();
            $bulk->insert($record);
            return $manager->executeBulkWrite($collection, $bulk);
        });
    }
}