2017 © Pedro Pelรกez
 

library scope-applicator

Scope Applicator is a PHP trait that makes data filtering and sorting easy.

image

mobileka/scope-applicator

Scope Applicator is a PHP trait that makes data filtering and sorting easy.

  • Monday, October 10, 2016
  • by mobileka
  • Repository
  • 4 Watchers
  • 22 Stars
  • 1,184 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

Build Status Code Climate Coverage Status, (*1)

ScopeApplicator brings an elegant way of sorting and filtering data to your PHP projects., (*2)

Overview

ScopeApplicator is an easy, logical and framework-agnostic way to achieve something like this:, (*3)

/posts โ€“ returns a list of all posts, (*4)

/posts?recent โ€“ returns only recent posts, (*5)

/posts?author_id=5 โ€“ returns posts belonging to an author with an id=5, (*6)

/posts?author_id=5&order_by_title=desc&status=active โ€“ returns only active posts belonging to an author with an id=5 and sorts them by a title in a descending order, (*7)

Requirements

โ€” php >= 5.4, (*8)

Supported frameworks:

Installation

If you're using one of the supported frameworks, follow framework-specific installation instructions on its page., (*9)

Otherwise, you can install ScopeApplicator as follows:, (*10)

composer require mobileka/scope-applicator 1.1.*, (*11)

Usage

If you're using one of the supported frameworks, follow framework-specific usage instructions on its page., (*12)

Otherwise, you have to create a custom binding for your own framework or PHP-project., (*13)

TODO: add detailed instructions about bindings, (*14)

Configuration options

ScopeApplicator supports several configuration options and these are described in this chapter., (*15)

Alias

Sometimes we don't want our users to see the actual scope name. Alias is a key that maps a URL query parameter to a scope name., (*16)

Example:, (*17)

public $scopes = [
    'orderByTitle' => ['alias' => 'order_by_title']
];

/posts?order_by_title โ€“ an orderByTitle scope will be applied, (*18)

/posts?orderByTitle โ€“ no scope will be applied, (*19)

Type

This option allows to cast a type of a parameter value before it will passed to a scope., (*20)

When type is set to bool or boolean, only 1 and true will be converted to true. Everything else is considered to be false., (*21)

If type is set to something different than bool or boolean, settype php function will be called., (*22)

Examples:, (*23)

public $scopes = [
    'userId' => [
        'alias' => 'author_id',
        'type' => 'int'
    ],
    'new' => [
        'type' => 'bool'
    ]
];

/posts?author_id=123sometext555 โ€“ a userId scope will be applied with integer 123 as an argument, (*24)

/posts?new=true โ€“ a new scope will be applied with boolean true as its argument, (*25)

/posts?new=yes โ€“ a new scope will be called with boolean false as its argument, (*26)

Default

When this option is set, a scope will be applied on every single request, even when there are no query parameters in URL matching a scope name or alias., (*27)

Examples:, (*28)

public $scopes = [
    'userId' => [
        'alias' => 'author_id',
        'default' => 5
    ]
];

/posts?author_id=1 - a userId scope will be applied with 1 as an argument, (*29)

/posts - a userId scope will be applied with 5 as an argument, (*30)

Allow Empty

allowEmpty is used when an empty string should be passed to a scope as an argument. This option is set to false by default, so the empty string won't be passed to a scope., (*31)

Examples:, (*32)

public $scopes = [
    'userId' => [
        'alias' => 'author_id',
        'allowEmpty' => true
    ]
];

/posts?author_id โ€“ a userId scope will be applied with '' (empty string) as an argument., (*33)

Please note that when allowEmpty is set to false (what is a default behavior), you always have to provide a default value for the scope argument. Otherwise, the "Missing argument" exception will be thrown when /posts?author_id route is being hit., (*34)

Also note that when allowEmpty is set to true, a default value of a scope argument will be ignored and an empty string will be passed instead., (*35)

Keys (experimental)

Keys are used when a scope accepts multiple arguments., (*36)

Example:, (*37)

public $scopes = [
    'createdAt' => [
        'alias' => 'created_at',
        'keys' => ['from', 'to']
    ]
];

/posts?created_at[from]=000-00-00&created_at[to]=2014-07-23 โ€“ a createdAt scope will be applied with '0000-00-00' as a first argument and '2014-07-23' as a second, (*38)

Please note that I don't recommend using this right now as it's an experimental feature. Create two separate scopes instead (createdAtFrom and createAtTo) until this feature is marked as "stable"., (*39)

Credits

Scope Applicator is inspired by has_scope Ruby gem., (*40)

Contributing

If you have noticed a bug or have suggestions, you can always create an issue or a pull request (use PSR-2). We will discuss the problem or a suggestion and plan the implementation together., (*41)

License

ScopeApplicator is an open-source software and licensed under the MIT License., (*42)

The Versions

10/10 2016

dev-master

9999999-dev

Scope Applicator is a PHP trait that makes data filtering and sorting easy.

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel filtering yii filters scopes

21/04 2016

1.1.2

1.1.2.0

Scope Applicator is a PHP trait that makes data filtering and sorting easy.

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel filtering yii filters scopes

04/07 2015

1.1.1

1.1.1.0

Scope Applicator is a PHP trait that makes data filtering and sorting easy.

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel filtering yii filters scopes

04/07 2015

1.1.0

1.1.0.0

Scope Applicator is a PHP trait that makes data filtering and sorting easy.

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel filtering yii filters scopes

03/07 2015

1.0.1

1.0.1.0

Scope Applicator is a PHP trait that makes data filtering and sorting easy.

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel filtering filters scopes

21/02 2015