cosmologist / gears
Collection of useful functions
Installs: 4 206
Dependents: 1
Suggesters: 0
Security: 0
Stars: 8
Watchers: 4
Forks: 1
Open Issues: 0
Requires
- php: >=5.3.0
- myclabs/php-enum: ^1.6
- symfony/property-access: ^2.8||^3.0
README
Collection of useful functions
Installation
composer require cosmologist/gears
Array functions
Push element onto the end of array and returns the modified array
$a = [1,2]; ArrayType::push($a, 3); // [1,2,3]
Prepend element to the beginning of an array and returns the modified array
$a = [2,3]; ArrayType::unshift($a, 1); // [1,2,3]
Calculate the average of values in an array (array_avg)
ArrayType::average([1, 2, 3]); // 3
Check if array is associative
ArrayType::checkAssoc([1, 2, 3]); // false ArrayType::checkAssoc(['foo' => 'bar']); // true
Check if a value exists in an array
ArrayType::contains(array $list, mixed $item);
Get an item from the array by key
ArrayType::get(['fruit' => 'apple', 'color' => 'red'], 'fruit'); // apple ArrayType::get(['fruit' => 'apple', 'color' => 'red'], 'weight'); // null ArrayType::get(['fruit' => 'apple', 'color' => 'red'], 'weight', 15); // 15
Convert list of items to ranges
ArrayType::ranges([1, 3, 7, 9]); // [[1, 3], [3, 7], [7, 9]]
Unset array item by value
ArrayType::unsetValue(['a', 'b', 'c'], 'b'); // ['a', 'c']
List walker
Walks through the list and calls a callback for each item.
ArrayType::each(iterable $list, callable $callback)
Recursive walker for list and descendants
Walks through the list and calls a callback for each item and for each child item (recursively).
ArrayType::eachDescendantOrSelf(iterable $list, callable $callback, string $childrenKey)
Collect children recursively
Collects children recursively of each item in the list, as well as the item itself.
ArrayType::descendantOrSelf(iterable $list, string $childrenKey): ArrayObject
Cast to an array
Behavior for different types:
- array - returns as is
- iterable - converts to a native array (
iterator_to_array()
) - another - creates an array with argument ([value])
ArrayType::toArray($value);
Verify that the contents of a variable is a countable value
If PHP >= 7.3.0 use
is_countable
function
ArrayType::isCountable($arrayOrCountable): bool;
Json functions
Decodes a JSON string, used exceptions instead errors.
try { Json::decode($json); // or Json::decodeToArray($json); } catch (JsonParseException $e) { throw $e; }
Object functions
Reads the value at the end of the property path of the object graph
ObjectType::get($person, 'address.street');
Uses Symfony PropertyAccessor
Sets the value at the end of the property path of the object graph
ObjectType::set($person, 'address.street', 'Abbey Road');
Uses Symfony PropertyAccessor
Reads the value of internal object property (protected and private)
Read ocramius
ObjectType::readInternalProperty($object, $property);
Writes the value to internal object property (protected and private)
Read ocramius
ObjectType::writeInternalProperty($object, $property, $value);
A string representation of the object
Returns the result of __toString
or null if the method is not defined.
PHP default behavior: if the method is not defined, an error (Object of class X could not be converted to string
) is triggered.
ObjectType::toString($instance);
Cast an object or a FQCN to FQCN
Returns the result of __toString
or null if the method is not defined.
PHP default behavior: if the method is not defined, an error (Object of class X could not be converted to string
) is triggered.
ObjectType::toClassName($objectOrClass): string;
String functions
Determine if a given string contains a given substring
StringType::contains('Foo', 'Bar'); // false StringType::contains('FooBar', 'Bar'); // true
Replace first string occurrence in an another string
StringType::replaceFirst('name name name', 'name', 'title'); // 'title name name'
Wrap string
StringType::wrap('target', '/'); // '/target/'
Guess the type of string
StringType::guessMime(file_get_contents('/foo/bar.baz'));
Guess the suitable file-extension for string
StringType::guessExtension('Foo bar baz'); // txt
Check if a string is a binary string
StringType::isBinary('Foo bar baz'); // false
Convert string to CamelCase
StringType::toCamelCase('string like this'); // 'StringLikeThis' StringType::toCamelCase('string_like_this'); // 'StringLikeThis'
Convert string to snake_case
StringType::toSnakeCase('StringLikeThis'); // 'string_like_this' StringType::toSnakeCase('string Like this'); // 'string_like_this'
ltrim()/rtrim()/trim() replacements supports UTF-8 chars in the charlist
Use these only if you are supplying the charlist optional arg and it contains UTF-8 characters. Otherwise trim will work normally on a UTF-8 string.
trim('«foo»', '»'); // "�foo" StringType::trim('«foo»', '»'); // "«foo"
Number functions
Parse a float or integer value from the argument
Remove all characters except digits, +-.,eE from the argument and returns result as the float value or NULL if the parser fails.
NumberType::parse(" 123 "); // int(123) NumberType::parse(" 123.45 "); // float(123.45) NumberType::parse(" 123.00 "); // int(123)
Parse a float value from the argument
Remove all characters except digits, +-.,eE from the argument and returns result as the float value or NULL if the parser fails.
NumberType::parseFloat(" 123 "); // float(123) NumberType::parseFloat(" 123.45 "); // float(123.45)
Parse a integer value from the argument
Remove all characters except digits, plus and minus sign and returns result as the integer value or NULL if the parser fails.
NumberType::parseInteger(" 123 "); // int(123) NumberType::parseFloat(" 123.45 "); // int(12345)
Returns fractions of the float value
NumberType::fractions(123.45); // float(0.45) NumberType::parseFloat(123); // float(0)
Checks if the value is odd
NumberType::odd(2); // false NumberType::odd(3); // true
Checks if the value is even
NumberType::even(2); // true NumberType::even(3); // false
Round to nearest multiple
NumberType::roundStep(50, 5); // 50 NumberType::roundStep(52, 5); // 50 NumberType::roundStep(53, 5); // 55
Round down to nearest multiple
NumberType::floorStep(50, 5); // 50 NumberType::floorStep(52, 5); // 50 NumberType::floorStep(53, 5); // 50
Round up to nearest multiple
NumberType::ceilStep(50, 5); // 50 NumberType::ceilStep(52, 5); // 55 NumberType::ceilStep(53, 5); // 55
Spell out
// Current locale used NumberType::spellout(123.45); // one hundred twenty-three point four five // Specific locale used NumberType::spellout(123.45, 'ru'); // сто двадцать три целых сорок пять сотых
Division with zero tolerance
NumberType::divideSafely(1, 0); // null NumberType::divideSafely(1, null); // null NumberType::divideSafely(1, 0, 'zero'); // 'zero'
Percent calculation
The first argument is a value for calculating the percentage. The second argument is a base value corresponding to 100%.
NumberType::percentage(10, 100); // 10 NumberType::percentage(100, 100); // 100 NumberType::percentage(200, 100); // 200
Unsign a number
A negative value will be converted to zero, positive or zero value will be returned unchanged.
NumberType::unsign(-1); // 0 NumberType::unsign(-0.99); // 0 NumberType::unsign(0); // 0 NumberType::unsign(0.99); // 0.99 NumberType::unsign(1); // 1
Converts a number to string with sign.
NumberType::toStringWithSign(-1); // "-1" NumberType::toStringWithSign(1); // "+1" NumberType::toStringWithSign(0); // "0"
Callable functions
Get a suitable reflection object for the callable
CallableType::reflection('is_null'); // Returns a ReflectionFunction instance CallableType::reflection([$foo, 'bar']); // Returns a ReflectionMethod instance