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.* | 
- 
Install the package via Composer: composer require illuminated/helper-functions 
- 
Use any of the provided helper functions: if (is_windows_os()) { call_in_background('switch-to-mac'); } 
Feel free to contribute.
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"]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"]],
// ]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],
// ]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 backgroundOptional 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 backgroundCheck whether the default database connection driver is sqlite or not:
db_is_sqlite();
// falseCheck whether the default database connection driver is mysql or not:
db_is_mysql();
// trueGet the current MySQL datetime:
db_mysql_now();
// "2020-05-25 20:09:33"Get value of the specified MySQL variable:
db_mysql_variable('hostname');
// "localhost"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"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]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:53Check whether the given string is an email address or not:
is_email('john.doe@example.com');
// trueConvert 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>"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"]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>"]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/"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 into kilobytes, megabytes, gigabytes or terabytes:
format_bytes(3333333);
// "3.18 MB"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>Check whether the given value is a valid JSON-encoded string or not:
is_json('{"foo":1,"bar":2,"baz":3}');
// trueIt 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]Check whether the operating system is Windows or not:
is_windows_os();
// falseConvert 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.
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>Laravel Helper Functions is open-sourced software licensed under the MIT license.



