Skip to content
A set PHP functions that SHOULD have been part of PHP's core libraries.
Branch: master
Clone or download
jasny Update README.md
Added link to improved PHP functions
Latest commit 052aa76 Feb 6, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
src
tests
.gitignore Use jasny\php-code-quality Sep 8, 2015
.sensiolabs.yml
.travis.yml Fix Travis script Sep 21, 2018
README.md
composer.json
global.php
phpcs.xml
phpstan.neon
phpunit.xml.dist

README.md

Jasny's PHP functions

Build Status Code Coverage Scrutinizer Code Quality SensioLabsInsight Packagist Stable Version Packagist License

A set PHP functions that should have been part of PHP's core libraries.

Example

$found = str_contains($string, 'foo') && array_contains($array, ['all', 'of', 'these']);
// VS
$found = strpos($string, 'foo') !== false && count(array_intersect($array, ['all', 'of', 'these'])) === 3;

But wait, there's more...

If you like these functions, you'll love the Improved PHP library. Go and check it out.

Installation

composer require jasny\php-functions

Usage

All functions are in the Jasny namespace.

use function Jasny\str_contains; // Import functions

str_contains('moonrise', 'on');

Jasny\slug('Foo bár'); // or use directly

To import all the functions to the global namespace require 'global.php' anywhere in your application.

require_once 'vendor/jasny/php-functions/global.php';

Alternatively, add it to the autoload section of composer.json.

"autoload": {
    "files": [
        "vendor/jasny/php-functions/global.php"
    ]
}

Type functions

is_associative_array

boolean is_associative_array(mixed $var)

Check if variable is an associative array.

is_numeric_array

boolean is_numeric_array(mixed $var)

Check if variable is a numeric array.

is_stringable

boolean is_stringable(mixed $var)

Check if variable can be cast to a string. Returns true for all scalar values except booleans and objects that have a __toString method.

objectify

stdClass|mixed objectify(array|mixed $var)

Turn an associated array into a stdClass object recursively.

arrayify

array|mixed arrayify(stdClass|mixed $var)

Turn an stdClass object into an associated array recursively.

get_type_description

string get_type_description(mixed $var)

Get the type of a variable in a descriptive way. E.g. "stream resource" and "DateTime object".

expect_type

expect_type(mixed $var, string|string[] $type, string $throwable = null, string $message = null)

Validate that an argument has a specific type.

As type you can specify any internal type, including callable and object, a class name or a resource type (eg stream resource). Typed arrays are not supported.

By default a TypeError (PHP 7) is thrown. You can specify a class name for any Throwable class. For PHP 5 you must specify the class name.

The message may contain a %s, which is replaced by the type of $var.

Example
expect_type($input, ['array', 'stdClass']);
expect_type($output, ['array', 'stdClass'], 'UnexpectedValueException', "Output should be an array or stdClass object, got a %s");

Array functions

array_only

array array_only(array $array, array $keys)

Return an array with only the specified keys.

array_without

array array_without(array $array, array $keys)

Return an array without the specified keys.

array_contains_all

boolean array_contains_all(array $array, array $subset, boolean $strict = false)

Check if an array contains all values in a set.

This function works as expected with nested arrays or an array with objects.

array_contains_all_assoc

boolean array_contains_all_assoc(array $array, array $subset, boolean $strict = false)

Check if an array contains all values in a set with index check.

This function works as expected with nested arrays or an array with objects.

array_contains_any

boolean array_contains_any(array $array, array $subset, boolean $strict = false)

Check if an array contains any value in a set.

This function works as expected with nested arrays or an array with objects.

array_contains_any_assoc

boolean array_contains_any_assoc(array $array, array $subset, boolean $strict = false)

Check if an array contains any value in a set with index check.

This function works as expected with nested arrays or an array with objects.

array_find

mixed array_find(array $array, callable $callback, int $flag = 0)

Find an element of an array using a callback function. Returns the value or FALSE if no element was found.

Flag determining what arguments are sent to callback:

  • ARRAY_FILTER_USE_KEY - pass key as the only argument to callback instead of the value
  • ARRAY_FILTER_USE_BOTH - pass both value and key as arguments to callback instead of the value
  • Default is 0 which will pass value as the only argument to callback instead.

array_find_key

string|int|false array_find_key(array $array, callable $callback, int $flag = 0)

Find a key of an array using a callback function. Returns the key or FALSE if no element was found.

array_flatten

array function array_flatten(string $glue, array $array)

Flatten a nested associative array, concatenating the keys.

Example
$values = array_flatten('.', [
    'animal' => [
        'mammel' => [
            'ape',
            'bear'
        ],
        'reptile' => 'chameleon'
    ],
    'colors' => [
        'red' => 60,
        'green' => 100,
        'blue' => 0
    ]
]);

Will become

[
    'animal.mammel' => [
        'ape',
        'bear'
    ],
    'animal.reptile' => 'chameleon',
    'colors.red' => 60,
    'colors.green' => 100,
    'colors.blue' => 0
]

array_join_pretty

string array_join_pretty(string $glue, string $and, array $array);

Join an array, using the 'and' parameter as glue the last two items.

Example
echo "A task to " . array_join_pretty(", ", " and ", $chores) . " has been created.", PHP_EOL;
echo array_join_pretty(", ", " or ", $names) . " may pick up this task.", PHP_EOL;

String functions

str_starts_with

boolean str_starts_with(string $string, $string $substr)

Check if a string starts with a substring.

str_ends_with

boolean str_ends_with(string $string, string $substr)

Check if a string ends with a substring.

str_contains

boolean str_contains(string $string, string $substr)

Check if a string contains a substring.

str_before

string str_before(string $string, string $substr)

Get a string before the first occurence of the substring. If the substring is not found, the whole string is returned.

str_after

string str_after(string $string, string $substr)

Get a string after the first occurence of the substring. If the substring is not found, an empty string is returned.

str_remove_accents

string str_remove_accents(string $string)

Replace characters with accents with normal characters.

str_slug

string str_slug(string $string, string $glue = '-')

Generate a URL friendly slug from the given string.

Cast functions

camelcase

string camelcase(string $string)

Turn a sentence, StudlyCase, snake_case or kabab-case into camelCase.

studlycase

string studlycase(string $string, $ucfirst = true)

Turn a sentence, camelCase, snake_case or kabab-case into StudlyCase.

snakecase

string snakecase(string $string)

Turn a sentence, StudlyCase, camelCase or kabab-case into snake_case.

kababcase

string kababcase(string $string)

Turn a sentence, StudlyCase, camelCase or snake_case into kabab-case.

uncase

string uncase(string $string)

Turn StudlyCase, camelCase, snake_case or kabab-case into a sentence.

Server functions

ip_in_cidr

boolean ip_in_cidr(string $ip, string $cidr)

Check if an IP address is in a CIDR block.

Works with IPv4 and IPv6.

ipv4_in_cidr

boolean ipv4_in_cidr(string $ip, string $cidr)

Check if an IPv4 address is in a CIDR block.

ipv6_in_cidr

boolean ipv6_in_cidr(string $ip, string $cidr)

Check if an IPv6 address is in a CIDR block.

inet_to_bits

string inet_to_bits(string $inet)

Converts inet_pton output to string with bits.

File functions

file_contains

boolean file_contains(string $filename, string $string)

Check if a string is present in the contents of a file.

This function is memory usage friendly by not loading the whole contents of the file at once.

fnmatch_extended

boolean fnmatch_extended(string $pattern, string $path)

Match path against wildcard pattern. This is an extended version of fnmatch.

  • ? Matches a single character, except /
  • # Matches any decimal characters (0-9)
  • * Matches any characters, except /
  • ** Matches any characters
  • [abc] Matches a, b or c
  • {ab,cd,ef} Matches ab, cd or ef

Function handling functions

call_user_func_assoc

mixed call_user_func_assoc(callable $callback, array $param_arr)

Call a callback with named parameters as associative array.

Object functions

object_get_properties

array object_get_properties(object $object, bool $dynamic = true)

Get the public properties of an object.

Unlike get_object_vars, this method will return only public properties regardless of the scope.

The dynamic flag controls if the output should be filtered, so only properties defined in the class are set.

object_set_properties

array object_get_properties(object $object, array $data, bool $dynamic = true)

Set the public properties of an object.

The dynamic flag controls if $data should be filtered, so only properties defined in the class are set.

You can’t perform that action at this time.