https://github.com/dxw/php-missing
Some functions missing from PHP's stdlib
https://github.com/dxw/php-missing
composer govpress packagist php
Last synced: about 1 year ago
JSON representation
Some functions missing from PHP's stdlib
- Host: GitHub
- URL: https://github.com/dxw/php-missing
- Owner: dxw
- License: mit
- Created: 2013-09-27T20:06:59.000Z (almost 13 years ago)
- Default Branch: main
- Last Pushed: 2023-07-19T13:38:43.000Z (almost 3 years ago)
- Last Synced: 2025-04-24T00:08:57.175Z (about 1 year ago)
- Topics: composer, govpress, packagist, php
- Language: PHP
- Homepage: https://packagist.org/packages/dxw/php-missing
- Size: 98.6 KB
- Stars: 5
- Watchers: 12
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: COPYING.md
Awesome Lists containing this project
README
# php-missing
PHP's standard library contains a lot of stuff, but it's missing a lot of stuff. All these functions are basic things that I've had to implement over and over again.
## Installation
Install [composer](http://getcomposer.org/).
Run the following in the root of your project:
composer require dxw/php-missing
Or, create a composer.json file with the following contents and run "composer install":
{
"require": {
"dxw/php-missing": "^2.0"
}
}
## API
* [\Missing\Arrays::flatten](#arr_flatten)
* [\Missing\Arrays::sortBy](#arr_sort_by)
* [\Missing\Dates::parse](#date_parse)
* [\Missing\Dates::strftime](#date_strftime)
* [\Missing\Ints::ordinalize](#int_ordinalize)
* [\Missing\Reflection::call](#reflection_call)
* [\Missing\Strings::startsWith](#string_starts_with)
* [\Missing\Strings::endsWith](#string_ends_with)
* [\Missing\Strings::getOutput](#string_get_output)
### Arrays
#### $array = \Missing\Arrays::flatten($array)
Flattens an array containing arrays.
\Missing\Arrays::flatten([1, [2, 3, [4, 5]]]) === [1, 2, 3, 4, 5]
#### $array = \Missing\Arrays::sortBy($array, $callback)
Sorts $array by $callback($array_element).
\Missing\Arrays::sortBy(['abc', 'ab', 'a'], function ($a) {return strlen($a);}) === ['a', 'ab', 'abc']
### Dates
#### list($timestamp, $err) = \Missing\Dates::parse($str)
Parses several common/standard time formats, returns a `Dxw\Result\Result` object containing either the UNIX timestamp or an error.
$result = \Missing\Dates::parse(get_post_meta($post->ID, '_EventStartDate', true));
if ($result->isErr()) {
$date = 'Unknown date';
} else {
$date = strftime('%e %B %Y', $result->unwrap());
}
The following date formats are parsed:
* %Y-%m-%dT%H:%M:%S
* %Y-%m-%d %H:%M:%S
* %Y-%m-%dT%H:%M
* %Y-%m-%d %H:%M
* %Y-%m-%d
#### $date = \Missing\Dates::strftime($date_string, $format, $else, $tz)
Parses $date_string using \Missing\Dates::parse() (also accepts a UTC timestamp), if it parses correctly, return the date formatted with $format in the timezone $tz, otherwise return $else.
Date:
### Ints
#### $string = \Missing\Ints::ordinalize($number)
Returns English ordinals for any given integer (i.e. 1 => "1st", 2 => "2nd").
Copied directly from active_record's [Inflector#ordinalize](http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-ordinalize) (also MIT licensed).
### Reflection
#### $value = \Missing\Reflection::call($object, $methodName, $arguments)
Calls private or protected method $methodName of $object with $arguments (an array) and returns what it returns.
### Strings
#### $bool = \Missing\Strings::startsWith($haystack, $needle)
Returns true if string $haystack starts with $needle (uses substr() - regexes not supported).
#### $bool = \Missing\Strings::endsWith($haystack, $needle)
Returns true if string $haystack ends with $needle (uses substr() - regexes not supported).
#### $string = \Missing\Strings::getOutput($callback)
Executes $callback, returns what it prints as a string.
## Licence
MIT - see COPYING.md
\Missing\Ints::ordinal and \Missing\Ints::ordinalize were ported from the Rails active_support module, also licensed under MIT.