1. Go to this page and download the library: Download gnugat/query-bus-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/ */
gnugat / query-bus-bundle example snippets
// File: app/AppKernel.php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Gnugat\QueryBusBundle\GnugatQueryBusBundle(),
);
// ...
}
// ...
}
// File: src/AppBundle/Entity/Article.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="article")
*/
class Article
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $title;
/**
* @ORM\Column(type="text")
*/
private $content;
public function __construct($title, $content)
{
$this->title = $title;
$this->content = $content;
}
public function getId()
{
return $this->id;
}
public function getTitle()
{
return $this->title;
}
public function getContent()
{
return $this->content;
}
}
// File: src/AppBundle/QueryBus/GetArticle.php
namespace AppBundle\QueryBus;
class GetArticle
{
public $id;
public function __construct($id)
{
if (null === $id) {
throw new \InvalidArgumentException('Missing
// File: src/AppBundle/Marshaller/ArticleMarshaller.php
namespace AppBundle\QueryBus;
use AppBundle\Entity\Article;
use Doctrine\Common\Persistence\ObjectManager;
use Gnugat\QueryBus\QueryMatcher;
class GetArticleMatcher implements QueryMatcher
{
private $objectManager;
public function __construct(ObjectManager $objectManager)
{
$this->objectManager = $objectManager;
}
public function supports($query)
{
return $query instanceof GetArticle;
}
public function match($query)
{
$article = $this->objectManager->find('AppBundle:Article', $query->id);
if (null === $article) {
throw new \DomainException(sprintf('Could not find article for ID "%s"', $query->id));
}
return $article;
}
}
// File: src/AppBundle/Controller/ArticleController.php
namespace AppBundle\Controller;
use AppBundle\QueryBus\GetArticle;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
class ArtcileController extends Controller
{
/**
* @Route("/api/v1/articles/{id}")
* @Method({"GET"})
*/
public function viewAction($id)
{
$article = $this->get('gnugat_query_bus.query_bus')->match(new GetArticle($id));
return new JsonResponse(array(
'id' => $article->getId(),
'title' => $article->getTitle(),
'content' => $article->getContent(),
), 200);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.