Download the PHP package wilensky/bitmask-trait without Composer
On this page you can find all versions of the php package wilensky/bitmask-trait. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package bitmask-trait
BitmaskTrait
PHP7 bitmask modem trait provides seamless integration of bitmasks in your application.
Bitmasks are useful in case when multiple states should be assigned to a single entity or/and exist simultaneously. With help of this trait you can easily pack up to 32/64 states in a single integer like no one else.
Generic example
Lets take regular invoice to demonstrate the essence.
Assuming invoice has several states:
State | Sent | Opened | Closed | Failed | Archived |
---|---|---|---|---|---|
Bit | 0 | 1 | 2 | 3 | 4 |
And related payment can have more than one state:
State | In progress | Successful | Auth. failed | Canceled | Failed | Refused | Refunded |
---|---|---|---|---|---|---|---|
Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
Looks like to organize states for both invoice and payment we would need 12 fields, but not with the bitmask.
What we can do is easily pack all 12 states in a single well known integer. Assumed state map can be the following:
State | Sent | Opened | Closed | Failed | Archived | In progress | Successful | Auth. failed | Canceled | Failed | Refused | Refunded | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
It can look the following way over time:
Bitmask | Sent | Opened | Closed | Failed | Archived | In progress | Successfull | Auth. failed | Cancelled | Failed | Refused | Refunded | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ||||
Invoice sent to customer | 3 | + | + | |||||||||||||
Invoice payment initiated | 35 | + | + | + | ||||||||||||
Payment successfull | 69 | + | + | + | ||||||||||||
Payment refunded | 2117 | + | + | + | + | + | ||||||||||
Payment auth. failed | 137 | + | + | + |
Basic usage
For ease of use const
with relevant bit positions can be created.
Creating a state
Checking a state for a state
Checking segments
We remember that we have invoice states along with payment states in a single mask. It is useful sometimes to check whether bit passed relates to a particular segment (if such are being used) or not exceeds the mask size itself.