1. Go to this page and download the library: Download beatswitch/distil 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/ */
beatswitch / distil example snippets
$authorId = 369;
// Author is an implementation of Distil\Criterion which acts as a Criteria factory.
$criteria = Author::criteria($authorId);
$posts = $getPostsQuery->get($criteria);
use Distil\Criteria;
final class GetPosts
{
public function get(Criteria $criteria)
{
...
if ($criteria->has('author')) {
$query->where('creator_id', '=', $criteria->get('author')->value());
}
}
}
$criteria = new Distil\Criteria();
if (isset($requestData['author'])) {
$criteria->add(Author::fromString($requestData['author']));
}
if (isset($requestData['sort'])) {
$criteria->add(new Sort($requestData['sort']));
}
...
$posts = $getPostsQuery->get($criteria);
$criteria = new Distil\Criteria(new Author($authorId), new Sort('publish_date'));
$criteria = new Distil\Criteria();
$criteria->add(new Author($authorId))
->add(new Sort('publish_date'));
$criteria = new Distil\Criteria(new Author(1));
$criteria->add(new Author(2)); // This will throw an Exception.
$criteria->set(new Author(2)); // This will overwrite new Author(1) with new Author(2)
$criteria = new Distil\Criteria(new Author(1));
$criteria->get('published'); // returns null
$criteria->get('author'); // returns the Author instance
$criteria[] = new Author(1); // Acts as set()
$author = $criteria['author']; // Acts as get(), but throws an error if the name doesn't exist
use Distil\Criterion;
final class Author implements Criterion
{
const NAME = 'author';
public function __construct(int $id)
{
$this->id = $id;
}
public function name(): string
{
return self::NAME;
}
public function value(): int
{
return $this->id;
}
}
use Distil\Types\IntegerCriterion;
final class Author extends IntegerCriterion
{
const NAME = 'author';
public function name(): string
{
return self::NAME;
}
}
use Distil\Criterion;
final class Limit implements Criterion
{
public function __construct(?int $value)
{
$this->value = $value;
}
public static function fromString(string $value): self
{
return new self((int) $value);
}
public function name(): string
{
return 'limit';
}
public function value(): ?int
{
return $this->value;
}
}
use Distil\Criterion;
use Distil\Keywords\HasKeywords;
use Distil\Keywords\Keyword;
final class Limit implements Criterion, HasKeywords
{
...
public static function fromString(string $value): self
{
$value = (new Keyword(self::class, $value))->value();
return new self($value ? (int) $value : $value);
}
public static function keywords(): array
{
return ['unlimited' => null];
}
}
new Limit(null) == Limit::fromString('unlimited'); // true
use Distil\Criterion;
use Distil\Keywords\HasKeywords;
use Distil\Keywords\Keyword;
final class Limit implements Criterion, HasKeywords
{
...
public static function keywords(): array
{
return ['unlimited' => null];
}
public function __toString(): string
{
return (new Value($this, $this->value))->keyword() ?: (string) $this->value;
}
}
$limit = new Distil\Common\Limit();
$limit->value(); // Returns 10, its default value
$sort = new Distil\Common\Sort('-name', 'created_at');
use Distil\Common\SortField;
$sort = new Distil\Common\Sort('-name');
$sort->sortFields() == [new SortField('name', SortField::DESC)];
new Distil\Criteria(new Author($authorId));
// can be rewritten as...
Author::criteria($authorId);
$criteria = new Distil\Criteria();
if (isset($requestData['sort'])) {
$criteria->add(new Sort($requestData['sort']));
}
if (isset($requestData['limit'])) {
$criteria->add(Limit::fromString($requestData['limit']));
}
...
// Note that these resolvers could be injected into the factory through your IoC container.
$factory = new Distil\CriterionFactory([
'sort' => Distil\Common\Sort::class,
'limit' => Distil\Common\Limit::class.'::fromString',
'foo' => function () {
// Some logic to resolve the foo criterion...
},
]);
$criteria = new Distil\Criteria();
foreach ($requestData as $name => $value) {
$criteria->add($factory->createByName($name, $value)),
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.