EQUAL
EQUAL
Return Data Equal To Given Urgency Index?
Priority Queue Class - Implements a Priority Queue
This is a list that automatically sorts itself according to Priority objects (data attached to priority numbers)
The lower the number, the higher urgency the item has in the list.
This object relies on AbstractSortedList and provides the sort algorithm required
NOTE: Because it checks against a priority interface, it's possible to have different 'kinds' of priority objects in this list despite its restrictions.
CHANGELOG
1.0: Created PriorityQueue - May 27th, 2013 1.1: Added Falcraft\Data\Types\Range support - October 7th, 2013 2.0: Refactored and re-formatted for inclusion in primus - April 11th, 2015 3.0: reformatted for inclusion in phabstractic - July 24th, 2016 3.0.1: implements configurationinterface - July 31st, 2016
configure(array|string|\Phabstractic\Features\Zend\Config\Config $configuration, string $format = null, mixed $context = null) : boolean
Configure An Object
Expects an array for configuration however, you can also pass it a filepath where it will read the information from a file automatically detecting the format using the file extension. You can also pass a Zend/Config object already made.
You can also pass a format specifier (forced format) for use in a if $configuration is a string formatted with such information. E.G. to load from a string in the format ini:
$this->configure($configString, 'ini');
The $context argument is used for any additional reader constructor information, such as the constructor for the 'yaml' format.
NOTE: You can override/extend the classes used for reading formats by identifying an additional array in the property $this->configReaders. This will merge with the standard formats array.
array|string|\Phabstractic\Features\Zend\Config\Config | $configuration | The objects configuration information. |
string | $format | The forced format, or format for configuration string |
mixed | $context | Any additional information for a reader constructor, such as needed for the YAML format. |
True if instantiated
saveSettings(string $file, \Phabstractic\Features\Zend\Config\Writer\WriterInterface $writer = null, boolean $exclusive = true, mixed $context = null)
Save an Object's Configuration to a File
Takes an objects $conf property and writes the information contained therein to a file with a format automatically specified by the filename.
It is possible to retrieve a string of a particular format from this method by specifying the filename '#string' with an extension indicating the desired format, such as '#string.json'.
The $context argument is used for any additional reader constructor information, such as the constructor for the 'yaml' format.
NOTE: You can override/extend the classes used for writing formats by identifying an additional array in the property $this->configWriters. This will merge with the standard formats array.
string | $file | The file path to write to, or '#string.ext' |
\Phabstractic\Features\Zend\Config\Writer\WriterInterface | $writer | The optional writer object supplied to use (such as a MySQL writer) |
boolean | $exclusive | Argument provided to toFile(), file exclusive lock when writing |
mixed | $context | Any additionla writer constructor information (YAML) |
getSettings(string $format, $context = null) : string|boolean
Retrieve an Object's Configuration Information As String
This is a shortcut to ::saveSettings() which specifies a format and forces the return of a string, using the #string.ext filename -see documentation for ::saveSettings()-
string | $format | The format to return, must be supported by ::saveSettings(), use $this->configWriters to support additional formats. |
$context |
The formatted string, or false otherwise
processSettings(\Phabstractic\Features\Zend\Config\Processor\ProcessorInterface $processor)
Process an Object's Configuration
This uses a Zend\Config\Processor implementation to process the configuration information, such as constants. The processor must be supplied and implement ProcessorInterface
NOTE: Edits the $conf object in place.
\Phabstractic\Features\Zend\Config\Processor\ProcessorInterface | $processor | The given processor object |
__construct(mixed $data = null, \Phabstractic\Data\Types\Phabstractic\Data\Types\Resource\FilterInterface $restrictions = null, mixed $options = array())
The Priority Queue constructor
Accepts data, and the obligatory options parameter
Passes the required restrictions onto the parent class along with the options
This instantiates the class and sets the index
Options: strict - Do we raise appropriate exceptions when values are misaligned?
mixed | $data | The data to initialize the queue |
\Phabstractic\Data\Types\Phabstractic\Data\Types\Resource\FilterInterface | $restrictions | The type restrictions |
mixed | $options | The options to pass into the object |
top() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Returns the top value, (that being the most urgent)
Does not pop the value off the list
Data from the priority object, null otherwise
topReference() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Returns the top value as a reference (that being the most urgent)
Does not pop the value off the list
Data from the priority object, null otherwise
index(integer $i, string $order = self::EQUAL) : array|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Returns the data objects specified by the order request as an array
Because this doesn't set references, the code had to be duplicated
integer | $i | the given urgency level |
string | $order | the given order, higher, lower, equal |
if strict and index doesn't exist
The array of data items that are equal, higher, or lower than the given urgency index
indexReference(integer $i, string $order = self::EQUAL) : array|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Returns the urgency index data items as an array of references
This turns out an array of the data objects that are higher, lower, or equal to the urgency level given.
integer | $i | the given urgency level |
string | $order | the given order, higher, lower, equal |
if strict is set and no index
An array of references to the data objects
pop() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Pop the most urgent item off the list
This truncates the list from the top, and returns its value
NOTE: This returns the priority's DATA
The data associated with the highest urgency, null otherwise
popReference() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Pop the most urgent item off the list as a reference
This truncates the list from the top, and returns its value as a reference
NOTE: This returns the priority's DATA
The data associated with the highest urgency, null otherwise
bottom() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Returns the least urgent item from the list
The data from the priority object, null if otherwise
bottomReference() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Returns the least urgent item from the list as a reference
The data from the priority object as a reference, null if otherwise
indexRange(\Phabstractic\Data\Types\Phabstractic\Data\Types\Range $r) : array
Get A Range Of Indexes
This gets an array of objects that have priorities between ranges
NOTE: The utility function must be used because of incompatibility of array_unique algorithm
\Phabstractic\Data\Types\Phabstractic\Data\Types\Range | $r | The range to include |
The appropriate array
indexRangeReference(\Phabstractic\Data\Types\Phabstractic\Data\Types\Range $r) : array
Get A Range Of Index References
This gets an array of objects that have priorities between ranges
NOTE: The utility function must be used because of incompatibility of array_unique algorithm
\Phabstractic\Data\Types\Phabstractic\Data\Types\Range | $r | The range to include |
The appropriate array
delete(mixed $data) : boolean
Deletes an element given by data from the list
This does not need sorting because the list will already be sorted by urgency, eliminating one item does not upset that sort
mixed | $data | The given data item to remove from the list |
if set to strict and element doesn't exist
Whether the data item was deleted, returns false if data item not in queue
pull() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Pull the least urgent item off the list
This truncates the lsit from the bottom, and return it's value
NOTE: This returns the priority's DATA
The data associated with the lowest urgency, null otherwise
pullReference() : mixed|\Phabstractic\Data\Types\Phabstractic\Data\Types\None
Pull the least urgent item off the list as a reference
This truncates the lsit from the bottom, and return it's value
NOTE: This returns the priority's DATA
The data reference associated with the lowest urgency, null otherwise
cmp(\Phabstractic\Data\Types\Phabstractic\Data\Type\Resource\PriorityInterface $l, \Phabstractic\Data\Types\Phabstractic\Data\Type\Resource\PriorityInterface $r) : integer
Compare Two Priority Objects
This is used by AbstractSortedList to sort the elements of the list
\Phabstractic\Data\Types\Phabstractic\Data\Type\Resource\PriorityInterface | $l | The first value to compare |
\Phabstractic\Data\Types\Phabstractic\Data\Type\Resource\PriorityInterface | $r | The second value to compare |
if the values to compare are not of PriorityInterface
The required comparison results.