for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file is part of the Borobudur-Cqrs package.
*
* (c) Hexacodelabs <http://hexacodelabs.com>
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Borobudur\Cqrs\ReadModel\Storage\Pdo\Expression;
use Borobudur\Cqrs\ReadModel\Storage\Finder\Expression\CompositeExpressionInterface;
/**
* @author Iqbal Maulana <[email protected]>
* @created 8/18/15
class PdoCompositeExpression implements CompositeExpressionInterface
{
* @var string
private $logic;
* @var array
private $parts = array();
* Constructor.
* @param string $logical
* @param array $parts
public function __construct($logical, array $parts)
$this->logic = $logical;
$this->add($parts);
}
* {@inheritdoc}
public function add($part)
if (is_array($part)) {
foreach ((array) $part as $value) {
$this->add($value);
return $this;
if (!empty($part) || ($part instanceof self && $part->count() > 0)) {
$this->parts[] = $part;
public function getLogic()
return $this->logic;
public function count()
return count($this->parts);
public function process()
return sprintf('(%s)', implode(' ' . $this->logic . ' ', $this->parts));
* Cast this composite expression to string representation.
* @return string
public function __toString()
return (string) $this->process();