Laravel 12
PHP 8.2+
Low commit activity in last 18 months
No release in over a year
Laravel-specific and pure PHP Helper Functions.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

phpunit/phpunit
^11.5.3
mockery/mockery
^1.6.10

Runtime

nesbot/carbon
^3.8.4
symfony/filesystem
^7.2
symfony/finder
^7.2
symfony/process
^7.2
symfony/var-dumper
^7.2
spatie/array-to-xml
^3.0
 Project Readme

Laravel-specific and pure PHP Helper Functions

Laravel Helper Functions

Buy me a coffee

StyleCI Build Status Coverage Status

Packagist Version Packagist Stars Packagist Downloads Packagist License

Laravel-specific and pure PHP Helper Functions.

Laravel Helper Functions
12.x 12.x
11.x 11.x
10.x 10.x
9.x 9.x
8.x 8.x
7.x 7.x
6.x 6.x
5.8.* 5.8.*
5.7.* 5.7.*
5.6.* 5.6.*
5.5.* 5.5.*
5.4.* 5.4.*
5.3.* 5.3.*
5.2.* 5.2.*
5.1.* 5.1.*

Usage

  1. Install the package via Composer:

    composer require illuminated/helper-functions
  2. Use any of the provided helper functions:

    if (is_windows_os()) {
        call_in_background('switch-to-mac');
    }

Available functions

Feel free to contribute.

  • Array

    • array_except_value
    • multiarray_set
    • multiarray_sort_by
  • Artisan

    • call_in_background
  • Database

    • db_is_sqlite
    • db_is_mysql
    • db_mysql_now
    • db_mysql_variable
  • Date

    • to_default_timezone
  • Debug

    • backtrace_as_string
    • minimized_backtrace_as_string
  • Email

    • is_email
    • to_rfc2822_email
    • to_swiftmailer_emails
    • to_symfony_emails
  • Filesystem

    • relative_path
  • Format

    • get_dump
    • format_bytes
    • format_xml
  • Json

    • is_json
  • System

    • is_windows_os
  • Xml

    • xml_to_array
    • array_to_xml

Array

array_except_value()

Remove the given values from the array:

array_except_value(['foo', 'bar', 'baz'], 'baz');

// ["foo", "bar"]
array_except_value(['foo', 'bar', 'baz'], ['bar', 'baz']);

// ["foo"]

multiarray_set()

Set the value for each item of the multidimensional array using "dot" notation:

$array = [
    ['name' => 'Mercedes-Benz', 'details' => ['type' => 'SUV']],
    ['name' => 'BMW', 'details' => ['type' => 'SUV']],
    ['name' => 'Porsche', 'details' => ['type' => 'SUV']],
];

multiarray_set($array, 'details.country', 'Germany');

// [
//     ["name" => "Mercedes-Benz", "details" => ["type" => "SUV", "country" => "Germany"]],
//     ["name" => "BMW", "details" => ["type" => "SUV", "country" => "Germany"]],
//     ["name" => "Porsche", "details" => ["type" => "SUV", "country" => "Germany"]],
// ]

multiarray_sort_by()

Sort the multidimensional array by several fields:

$array = [
    ['name' => 'Mercedes-Benz', 'model' => 'GLS', 'price' => 120000],
    ['name' => 'Mercedes-Benz', 'model' => 'GLE Coupe', 'price' => 110000],
    ['name' => 'BMW', 'model' => 'X6', 'price' => 77000],
    ['name' => 'Porsche', 'model' => 'Cayenne', 'price' => 117000],
];

$sorted = multiarray_sort_by($array, 'name', 'model');

// [
//     ["name" => "BMW", "model" => "X6", "price" => 77000],
//     ["name" => "Mercedes-Benz", "model" => "GLE Coupe", "price" => 110000],
//     ["name" => "Mercedes-Benz", "model" => "GLS", "price" => 120000],
//     ["name" => "Porsche", "model" => "Cayenne", "price" => 117000],
// ]

Also, you can change the sort order:

$array = [
    ['name' => 'Mercedes-Benz', 'model' => 'GLS', 'price' => 120000],
    ['name' => 'Mercedes-Benz', 'model' => 'GLE Coupe', 'price' => 110000],
    ['name' => 'BMW', 'model' => 'X6', 'price' => 77000],
    ['name' => 'Porsche', 'model' => 'Cayenne', 'price' => 117000],
];

$sorted = multiarray_sort_by($array, 'name', SORT_ASC, 'model', SORT_DESC);

// [
//     ["name" => "BMW", "model" => "X6", "price" => 77000],
//     ["name" => "Mercedes-Benz", "model" => "GLS", "price" => 120000],
//     ["name" => "Mercedes-Benz", "model" => "GLE Coupe", "price" => 110000],
//     ["name" => "Porsche", "model" => "Cayenne", "price" => 117000],
// ]

Artisan

call_in_background()

Call the given artisan console command in background.

Code execution continues immediately, without waiting for results.

call_in_background('report');

// "php artisan report" would be called in background

Optional before and after sub-commands could be used:

call_in_background('report:monthly subscriptions', 'sleep 0.3');

// "sleep 0.3 && php artisan report:monthly subscriptions" would be called in background

Database

db_is_sqlite()

Check whether the default database connection driver is sqlite or not:

db_is_sqlite();

// false

db_is_mysql()

Check whether the default database connection driver is mysql or not:

db_is_mysql();

// true

db_mysql_now()

Get the current MySQL datetime:

db_mysql_now();

// "2020-05-25 20:09:33"

db_mysql_variable()

Get value of the specified MySQL variable:

db_mysql_variable('hostname');

// "localhost"

Date

to_default_timezone()

Convert the given datetime to the default timezone (see app.timezone config):

to_default_timezone('2017-02-28T14:05:01Z');

// "2017-02-28 16:05:01", assuming that `app.timezone` is "Europe/Kiev"

Debug

backtrace_as_string()

Get backtrace without arguments, as a string:

$backtrace = backtrace_as_string();

#0  backtrace_as_string() called at [/htdocs/example/routes/web.php:15]
#1  Illuminate\Routing\Router->{closure}() called at [/htdocs/example/vendor/laravel/framework/src/Illuminate/Routing/Route.php:189]
#2  Illuminate\Foundation\Http\Kernel->handle() called at [/htdocs/example/public/index.php:53]

minimized_backtrace_as_string()

Get minimized backtrace, as a string:

$backtrace = minimized_backtrace_as_string();

#0 /htdocs/example/routes/web.php:15
#1 /htdocs/example/vendor/laravel/framework/src/Illuminate/Routing/Route.php:189
#2 /htdocs/example/public/index.php:53

Email

is_email()

Check whether the given string is an email address or not:

is_email('john.doe@example.com');

// true

to_rfc2822_email()

Convert addresses data to RFC 2822 string, suitable for PHP mail() function:

to_rfc2822_email([
    ['address' => 'john.doe@example.com', 'name' => 'John Doe'],
    ['address' => 'jane.smith@example.com'],
]);

// "John Doe <john.doe@example.com>, jane.smith@example.com"

Also, it supports simplified syntax for a single address:

to_rfc2822_email(['address' => 'john.doe@example.com', 'name' => 'John Doe']);

// "John Doe <john.doe@example.com>"

to_swiftmailer_emails()

Convert addresses data to SwiftMailer-suitable format:

to_swiftmailer_emails([
    ['address' => 'john.doe@example.com', 'name' => 'John Doe'],
    ['address' => 'jane.smith@example.com'],
]);

// ["john.doe@example.com" => "John Doe", "jane.smith@example.com"]

Also, it supports simplified syntax for a single address:

to_swiftmailer_emails(['address' => 'john.doe@example.com', 'name' => 'John Doe']);

// ["john.doe@example.com" => "John Doe"]

to_symfony_emails()

Convert addresses data to Symfony-suitable format:

to_symfony_emails([
    ['address' => 'john.doe@example.com', 'name' => 'John Doe'],
    ['address' => 'jane.smith@example.com'],
]);

// ["John Doe <john.doe@example.com>", "jane.smith@example.com"]

Also, it supports simplified syntax for a single address:

to_symfony_emails(['address' => 'john.doe@example.com', 'name' => 'John Doe']);

// ["John Doe <john.doe@example.com>"]

Filesystem

relative_path()

Get a relative path for the given folders:

relative_path('/var/www/htdocs', '/var/www/htdocs/example');

// "../"

You can pass the relative path as a parameter too:

relative_path('/var/www/htdocs/example/public/../../', '/var/');

// "www/htdocs/"

Format

get_dump()

Get a nicely formatted string representation of the variable, using the Symfony VarDumper Component:

$array = [
    'a simple string' => 'Hello!',
    'a float' => 1.0,
    'an integer' => 1,
    'a boolean' => true,
    'an empty array' => [],
];

$dump = get_dump($array);

// array:5 [
//     "a simple string" => "Hello!"
//     "a float" => 1.0
//     "an integer" => 1
//     "a boolean" => true
//     "an empty array" => []
// ]

format_bytes()

Format bytes into kilobytes, megabytes, gigabytes or terabytes:

format_bytes(3333333);

// "3.18 MB"

format_xml()

Format the given XML string using new lines and indents:

format_xml('<?xml version="1.0"?><root><task priority="low"><to>John</to><from>Jane</from><title>Go to the shop</title></task><task priority="medium"><to>John</to><from>Paul</from><title>Finish the report</title></task><task priority="high"><to>Jane</to><from>Jeff</from><title>Clean the house</title></task></root>');

// <?xml version="1.0"?>
// <root>
//   <task priority="low">
//     <to>John</to>
//     <from>Jane</from>
//     <title>Go to the shop</title>
//   </task>
//   <task priority="medium">
//     <to>John</to>
//     <from>Paul</from>
//     <title>Finish the report</title>
//   </task>
//   <task priority="high">
//     <to>Jane</to>
//     <from>Jeff</from>
//     <title>Clean the house</title>
//   </task>
// </root>

Json

is_json()

Check whether the given value is a valid JSON-encoded string or not:

is_json('{"foo":1,"bar":2,"baz":3}');

// true

It returns decoded JSON if you pass true as a second argument:

is_json('{"foo":1,"bar":2,"baz":3}', true);

// ["foo" => 1, "bar" => 2, "baz" => 3]

System

is_windows_os()

Check whether the operating system is Windows or not:

is_windows_os();

// false

Xml

xml_to_array()

Convert the given XML to array:

xml_to_array('<?xml version="1.0"?>
<Guys>
    <Good_guy Rating="100">
        <name>Luke Skywalker</name>
        <weapon>Lightsaber</weapon>
    </Good_guy>
    <Bad_guy Rating="90">
        <name>Sauron</name>
        <weapon>Evil Eye</weapon>
    </Bad_guy>
</Guys>
');

// [
//     "Good_guy" => [
//         "name" => "Luke Skywalker",
//         "weapon" => "Lightsaber",
//         "@attributes" => [
//             "Rating" => "100",
//         ],
//     ],
//     "Bad_guy" => [
//         "name" => "Sauron",
//         "weapon" => "Evil Eye",
//         "@attributes" => [
//             "Rating" => "90",
//         ],
//     ],
// ]

Alternatively, you can pass an instance of the SimpleXMLElement class instead of a string.

array_to_xml()

Convert the given array to XML string:

$array = [
    'Good guy' => [
        'name' => 'Luke Skywalker',
        'weapon' => 'Lightsaber',
        '@attributes' => [
            'Rating' => '100',
        ],
    ],
    'Bad guy' => [
        'name' => 'Sauron',
        'weapon' => 'Evil Eye',
        '@attributes' => [
            'Rating' => '90',
        ],
    ]
];

$xml = array_to_xml($array, 'Guys');

// <?xml version="1.0" encoding="utf-8"?>
// <Guys>
//    <Good_guy Rating="100">
//        <name>Luke Skywalker</name>
//        <weapon>Lightsaber</weapon>
//    </Good_guy>
//    <Bad_guy Rating="90">
//        <name>Sauron</name>
//        <weapon>Evil Eye</weapon>
//    </Bad_guy>
// </Guys>

Sponsors

Laravel Idea
Material Theme UI Plugin

License

Laravel Helper Functions is open-sourced software licensed under the MIT license.

Buy me a coffee