Download the PHP package yomy/datastructures without Composer
On this page you can find all versions of the php package yomy/datastructures. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download yomy/datastructures
More information about yomy/datastructures
Files in yomy/datastructures
Package datastructures
Short Description Data structures
License Apache-2.0
Homepage https://github.com/yomy/datastructures
Informations about the package datastructures
datastructures
Common data structures for PHP
Installation and documentation
- Available as [Composer] package [yomy/datastructures].
What is this library about
This library adds data structure classes that can be used for better organisation of your objects
Examples of value object
Creating an object:
Getting value from the object
Objects with the same value are going to be the same object
You can use type hinting in methods
You can extend the object for more detailed type hinting
Objects of different class or variable type are different
Instead of a strong (===) comparison operator, you could also use the equals() method
Generally, unserialize of a value object is prohibited, as this would break the ability to compare objects by reference. However, you might have a case you don't care about strict comparison, and need to unserialize the object. You can add a WeakValueObjectTrait usage to your custom object, which will allow unserializing it, and also compare objects by the values instead of reference when using equals() method
Examples of Enum value object
Creating an enum object
Creating enum objects
or by referring referring to key
You will get an error if you try to instantiate invalid value
Examples of Positive Integer value object
As value objects are commonly used as identifiers for database entities with an integer key, positive int value object ensures a valid key object for this purpose
Creating an object:
Usually, the id key in the db cannot be a 0, so these objects are invalid:
Of course, as with a basic value object, it is intended to use these in extended classes.
Examples of GenericCollection usage
Creating a collection object:
Adding objects to the collection
You could also add objects by using array syntax
Objects can be added multiple times
Collection supports adding an array of values at once
Removing objects from a collection - removes all occurrences of the object
Getting objects from the collection
Note that you cannot get objects with array syntax
You can also iterate trough the collection itself
Count the number of objects in a collection
Verify that the collection is empty
Verify that the collection contains an object
You can shallow copy the collection
You can append another collection to the collection
Collection supports custom sort of its objects.
Collection can be filtered to get a new collection with filtered objects
Collection can be transformed to array with a callback method. This allows extracting underlying data from objects or doing custom calculations
Collection can be transformed (appended) to another collection
Examples of ObjectCollection usage
ObjectCollection is an extension of GenericCollection that is intended to contain only objects of specific class.
Creating an ObjectCollection of specific type
All of the methods from GenericCollection work almost the same, except for the fact that only objects of the exact type that was passed in the Collection constructor are allowed.
Trying to add an object of wrong type will throw an InvalidArgumentException
Collection will work with extended objects as well
The primary intent of the ObjectCollection is to have a custom named collection
Having a collection such as this allows for type hinting in the code and we're sure that a collection only consists of objects of specific type
In some cases, we need to "try" and fill a collection from an unknown array of objects. tryAddArray() method will allow for safely trying to add all objects of correct type and provide an array of objects that have failed to be added.
Examples of KeyValueCollection usage
KeyValueCollection is a collection that is intended to contain Key=>Value pairs. Internally, this collection holds objects of Pair type, but the intention is not to use these Pair objects directly, but trough setting a key and value directly on a collection object.
A KeyValueCollection should be used via put() and get() methods.
You can also use the array syntax when using KeyValueCollection
KeyValueCollection has unique keys. This means that putting something on a key that already exists will owerwrite the value in the collection
Now, you might think that this is simply emulating an associative array, so why would you use this instead?
The power of KeyValueCollection is that it can hold objects as keys, so you can have: