1. Go to this page and download the library: Download wwwision/dcb-eventstore library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\Query\QueryItem;
// return only events of the type "SomeEventType"
$eventStore->read(
Query::fromItems(
QueryItem::create(eventTypes: 'SomeEventType')
)
);
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\Query\QueryItem;
// return only events that are tagged "some:tag"
$eventStore->read(
Query::fromItems(
QueryItem::create(tags: 'some:tag')
)
);
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\Query\QueryItem;
// return only events that are tagged with "some:tag" AND "some:other-tag" and are of type "SomeType" OR "SomeOtherType"
$eventStore->read(
Query::fromItems(
QueryItem::create(eventTypes: ['SomeType', 'SomeOtherType'], tags: ['some:tag', 'some:other-tag'])
)
);
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\Query\QueryItem;
// return only events that are tagged "some:tag" and are of type "SomeType" OR that are tagged "some:other-tag" and are of type "SomeOtherType"
$eventStore->read(
Query::fromItems(
QueryItem::create(eventTypes: 'SomeType', tags: 'some:tag'),
QueryItem::create(eventTypes: 'SomeOtherType', tags: 'some:other-tag')
)
);
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\ReadOptions;
// read 100 events starting from sequence position 1234:
$eventStore->read(
Query::all(),
ReadOptions::create(
from: 1234,
limit: 100,
)
);
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\ReadOptions;
// read 50 events before (and including) event at sequence number 321
$eventStore->read(
Query::all(),
ReadOptions::create(
from: 321,
limit: 50,
backwards: true,
)
);
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\Query\QueryItem;
use Wwwision\DCBEventStore\ReadOptions;
// get last "InvoiceCreated" event (or NULL if none exists yet)
$lastInvoiceCreatedEvent = $eventStore->read(
Query::fromItems(
QueryItem::create(eventTypes: 'InvoiceCreated')
),
ReadOptions::create(
limit: 1,
backwards: true,
)
)->first();
$lastInvoiceNumber = $lastInvoiceCreatedEvent?->event->data->jsonDecode()['invoiceNumber'] ?? 0;
use Wwwision\DCBEventStore\Event\Event;
// append a single event without conditions
$eventStore->append(
Event::create(
type: 'SomeEventType',
data: ['foo' => 'bar', 'bar' => 'baz'],
tags: ['tag1', 'tag2'],
)
);
use Wwwision\DCBEventStore\Event\Event;
use Wwwision\DCBEventStore\Event\Events;
// append two events atomically without conditions
$eventStore->append(
Events::fromArray([
Event::create(type: 'SomeEventType', data: 'data1'),
Event::create(type: 'SomeOtherEventType', data: 'data2'),
])
);
use Wwwision\DCBEventStore\AppendCondition\AppendCondition;
use Wwwision\DCBEventStore\Event\Event;
use Wwwision\DCBEventStore\Event\Events;
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\Query\QueryItem;
// append a single "ProductDefined" event only if no corresponding event with the same tag was appended previously
$eventStore->append(
Event::create(type: 'ProductDefined', data: ['id' => 'p123', 'title' => 'Some product'], tags: ['product:p123']),
condition: AppendCondition::create(
failIfEventsMatch: Query::fromItems(QueryItem::create(eventTypes: 'ProductDefined', tags: 'product:p123')),
),
);
use Wwwision\DCBEventStore\AppendCondition\AppendCondition;
use Wwwision\DCBEventStore\Event\Event;
use Wwwision\DCBEventStore\Event\Events;
use Wwwision\DCBEventStore\Query\Query;
use Wwwision\DCBEventStore\Query\QueryItem;
// append a single "ProductPriceChanged" event only if no corresponding event with the same tag was appended after the safe point (sequence position 1234)
$eventStore->append(
Event::create(type: 'ProductPriceChanged', data: ['id' => 'p123', 'newPrice' => 54321], tags: ['product:p123']),
condition: AppendCondition::create(
failIfEventsMatch: Query::fromItems(QueryItem::create(eventTypes: 'ProductPriceChanged', tags: 'product:p123')),
after: 1234,
),
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.