1. Go to this page and download the library: Download geekcell/ddd-bundle 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/ */
geekcell / ddd-bundle example snippets
// src/Domain/Event/OrderPlacedEvent.php
use GeekCell\Ddd\Contracts\Domain\Event as DomainEvent;
readonly class OrderPlacedEvent implements DomainEvent
{
public function __construct(
public Order $order,
) {
}
}
// src/Domain/Model/Order.php
use GeekCell\DddBundle\Domain\AggregateRoot;
class Order extends AggregateRoot
{
public function save(): void
{
$this->record(new OrderPlacedEvent($this));
}
// ...
}
// Actual usage ...
$order = new Order( /* ... */ );
$order->save();
$order->commit(); // All recorded events will be dispatched and released
// src/Application/Query/TopRatedBookQuery.php
use GeekCell\Ddd\Contracts\Application\Query;
readonly class TopRatedBooksQuery implements Query
{
public function __construct(
public string $category,
public int $sinceDays,
public int $limit = 10,
) {
}
// Getters etc.
}
// src/Application/Query/TopRatedBookQueryHandler.php
use GeekCell\Ddd\Contracts\Application\QueryHandler;
#[AsMessageHandler]
class TopRatedBookQueryHandler implements QueryHandler
{
public function __construct(
private readonly BookRepository $repository,
) {
}
public function __invoke(TopRatedBookQuery $query)
{
$books = $this->repository
->findTopRated($query->category, $query->sinceDays)
->paginate($query->limit);
return $books;
}
}
// src/Infrastructure/Http/Controller/BookController.php
use GeekCell\Ddd\Contracts\Application\QueryBus;
class BookController extends AbstractController
{
public function __construct(
private readonly QueryBus $queryBus,
) {
}
#[Route('/books/top-rated')]
public function getTopRated(Request $request)
{
$query = new TopRatedBooksQuery( /* extract from request */ );
$topRatedBooks = $this->queryBus->dispatch($query);
// ...
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.