PHP code example of hibit-dev / criteria

1. Go to this page and download the library: Download hibit-dev/criteria 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/ */

    

hibit-dev / criteria example snippets


use Hibit\Criteria;
use Hibit\CriteriaPagination;
 
final class UserSearchCriteria extends Criteria
{
    public const PER_PAGE = 10;
 
    private ?string $email = null;
    private ?string $name = null;
 
    public static function create(
        string $email = null,
        string $name = null
    ): UserSearchCriteria {
        $criteria = new self(CriteriaPagination::create(self::PER_PAGE));
 
        if (!empty($email)) {
            $criteria->email = $email;
        }
 
        if (!empty($name)) {
            $criteria->name = $name;
        }
 
        return $criteria;
    }
 
    public function email(): ?string
    {
        return $this->email;
    }
 
    public function name(): ?string
    {
        return $this->name;
    }
}

use Hibit\CriteriaPagination;
use Hibit\CriteriaSort;
use Hibit\CriteriaSortDirection;
 
class CriteriaTestClass
{
    public function __invoke(UserRepository $userRepository): array
    {
        // Pagination criteria: limit=10 offset=0
        $pagination = CriteriaPagination::create(10, 0);
 
        // Sorting criteria: created_at ASC
        $sorting = CriteriaSort::create('created_at', CriteriaSortDirection::ASC);
 
        // Filter criteria: name=John
        $userSearchCriteria = UserSearchCriteria::create(null, 'John');
 
        $userSearchCriteria->paginateBy($pagination)->sortBy($sorting);
 
        return $userRepository->searchByCriteria($userSearchCriteria);
    }
}

// Criteria filters
$userCriteria->email();
$userCriteria->name();
 
// Criteria pagination
$userCriteria->pagination()?->limit()->value();
$userCriteria->pagination()?->offset()->value();
 
// Criteria sorting
$userCriteria->sort()?->field()->value();
$userCriteria->sort()?->field()->value();