for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types = 1);
namespace Puzzle\QueryBuilder\Conditions;
use Puzzle\QueryBuilder\Escaper;
use Puzzle\QueryBuilder\Type;
abstract class AbstractInCondition extends AbstractCondition
{
protected
$type,
Only declaring a single property per statement allows you to later on add doc comments more easily.
It is also recommended by PSR2, so it is a common style that many people expect.
$type
The PSR-2 coding standard requires that all properties in a class have their visibility explicitly declared. If you declare a property using
class A { var $property; }
the property is implicitly global.
To learn more about the PSR-2, please see the PHP-FIG site on the PSR-2.
$values;
public function __construct(Type $column, array $values)
$this->type = $column;
$this->values = $values;
}
public function toString(Escaper $escaper): string
if($this->isEmpty())
return '';
$values = $this->escapeValues($this->values, $escaper);
return sprintf(
'%s %s (%s)',
$this->type->getName(),
$this->getOperator(),
implode(', ', $values)
);
public function isEmpty(): bool
$columnName = $this->type->getName();
return empty($columnName);
abstract protected function getOperator(): string;
protected function escapeValues(array $values, Escaper $escaper): array
$escapedValues = [];
foreach($values as $value)
$formatedValue = $this->type->format($value);
if($this->type->isEscapeRequired())
$formatedValue = $escaper->escape($formatedValue);
$escapedValues[] = $formatedValue;
return $escapedValues;
Only declaring a single property per statement allows you to later on add doc comments more easily.
It is also recommended by PSR2, so it is a common style that many people expect.