for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Spatie\Analytics;
use DateTime;
use Carbon\Carbon;
use Spatie\Analytics\Exceptions\InvalidFilter;
class Filters
{
private $filters;
public static function create($filters=[]): Filters
return new static($filters);
}
public function __construct($filters=[])
foreach( $filters as $filter ) {
$this->checkFilterSyntax($filter);
$this->filters = $filters;
public function addFilter($filter)
$this->filters[] = $filter;
private function checkFilterSyntax($filter) {
if ( strpos( $filter, 'ga:' ) !== 0 ) {
throw InvalidFilter::filterMustContainGA($filter);
public function __toString()
return implode(';', $this->filters);