Package Data | |
---|---|
Maintainer Username: | repat |
Maintainer Contact: | repat@repat.de (repat) |
Package Create Date: | 2015-12-09 |
Package Last Update: | 2024-03-27 |
Home Page: | https://packagist.org/packages/repat/laravel-helper |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-15 15:15:59 |
Package Statistics | |
---|---|
Total Downloads: | 5,105 |
Monthly Downloads: | 30 |
Daily Downloads: | 0 |
Total Stars: | 5 |
Total Watchers: | 3 |
Total Forks: | 1 |
Total Open Issues: | 0 |
laravel-helper is a package full of helper functions I found useful when developing applications with Laravel. All functions are wrapped with a functions_exists()
in case of conflicts.
Also have a look at
Ideas what should go in here? Write a pull request or email!
$ composer require repat/laravel-helper
array_equal($arr1, $arr2)
Determines if 2 arrays have the same items, independent of order.
$arr1 = [1, 2, 3];
$arr2 = [3, 2, 1];
array_equal($arr1, $arr2);
// returns: true
$arr3 = [4, 5, 6];
array_equal($arr1, $arr3);
// returns: false
array_key2value($array)
Returns an array where key == value. Syntactic sugar for array_combine($array, $array);
$array = [1, 3, 5];
print_r(array_key2value($array));
// returns: Array( [1] => 1, [3] => 3, [5] => 5 )
array_delete_value($array, $value)
Deletes all elements from $array
that have value $value
. Essentially syntactic sugar for array_diff()
.
$array = ['foo', 'bar'];
print_r(array_delete_value($array, 'foo'));
// returns Array( [1] => "bar" )
contains_duplicates($array)
Checks if there are duplicates in given array.
contains_duplicates([1, 1]);
// returns: true
contains_duplicates([1, 2]);
// returns: false
mysql_headers($table, $assoc = false)
Returns an array of MySQL headers/columns or empty array in case of an error. If the second parameter is set true
(default is false
) it returns an associative array.
print_r(mysql_headers("test_table"));
// returns: Array( [0] => head1, [1] => head2 )
print_r(mysql_headers("test_table", $assoc = true));
// returns: Array( [head1] => head1, [head2] => head2)
table_headers($model)
Returns the database table headers, similar to mysql_headers()
, but based on an object of a Eloquent Model.
use App\Models\User;
$user = User::first();
print_r(table_headers($user));
// returns: Array( 1 => id, 2 => name, ...)
print_db_session($table = 'sessions')
print_r()
the session of current user.
print_db_session();
// returns:
// Array
// (
// [_token] => 7Au0aYkJVxQVA3xQBfdJwKNaWxUv0UVJKublCqMn
// [locale] => en
// ...
// )
get_free_slug($toSlug, $field, $fqcn, $id, $pk)
Returns a unique slug for an Eloquent Model given the following parameters:
$toSlug
: suggestion for the slug$field
: name of the database field, usually slug
$fqcn
: Fully qualified class name of Eloquent Model$id
: id to exclude (e.g. it's own on update)$pk
: primary key of the database table, defaults to id
Will append a number if $toSlug
is already taken.
use App\Model\User;
$user = User::first();
$user->id;
// returns: 1
$user->slug;
// returns: foobar
get_free_slug('foobar', 'slug', User::class, 1, 'id');
// returns: foobar1
days_in_month($month = null, $year = null)
Returns amount of days in given month or year. Defaults to current month and year.
days_in_month();
// returns: 31 (for e.g. May)
days_in_month($april = 4);
// returns: 30
days_in_month($feb = 2, $year = 2020);
// returns: 29 (2020 is a leap year)
days_this_month()
Returns amount of days of the current month.
days_this_month();
// returns: 31 (for e.g. May)
days_next_month()
Returns amount of days of the next month.
days_next_month();
// returns: 30 (for e.g. May because June has 30)
days_this_year()
Returns amount of days of the current year.
days_this_year();
// returns: 365 (because it's not a leap year)
days_left_in_month()
Returns amount of days left in current month.
days_left_in_month();
// returns: 29 (on 1st April)
days_left_in_year()
Returns amount of days left in current year.
days_left_in_year();
// returns: 274 (on 1st April 2019)
timezone_list()
Returns a list of all timezones.
timezone_list();
// returns:
// [
// "Pacific/Pago_Pago" => "(UTC-11:00) Pacific/Pago_Pago",
// "Pacific/Niue" => "(UTC-11:00) Pacific/Niue",
// "Pacific/Midway" => "(UTC-11:00) Pacific/Midway",
// ...
// "Pacific/Chatham" => "(UTC+13:45) Pacific/Chatham",
// "Pacific/Kiritimati" => "(UTC+14:00) Pacific/Kiritimati",
// "Pacific/Apia" => "(UTC+14:00) Pacific/Apia",
// ];
tomorrow()
Similar to today()
or now()
, this function returns a Carbon instance for tomorrow.
tomorrow();
// returns: Carbon\Carbon @1554156000 {#5618
// date: 2019-04-20 00:00:00.0 Europe/Amsterdam (+02:00),
// }
seconds2minutes($seconds)
Returns i:s
string with 60+ minutes instead of showing the hours as well.
seconds2minutes(42);
// returns: 00:42
seconds2minutes(90);
// returns: 01:30
seconds2minutes(4223);
// returns: 70:23
morph_map()
Returns the morphMap from AppServiceProvider
set with Relation::morphMap()
.
morph_map();
// returns:Array
// (
// [user] => App\Models\User
// )
morph_map_key($fqcn)
Reverse lookup for a class in the morphMap of the AppServiceProvider
set with Relation::morphMap()
.
use App\Models\User;
morph_map_key(User::class);
// returns: 'user'
object2array($object)
Array representation of an object, e.g. an Eloquent Model.
use App\Models\User;
object2array(User::first());
// returns: [
// "casts" => [
// "someday_at" => "datetime",
// // ...
// ],
// "incrementing" => true,
// "exists" => true,
// "wasRecentlyCreated" => false,
// "timestamps" => true,
// ]
cache_get_or_add($key, $callable)
Returns Cache for given key or adds the return value from the callable to the cache and then returns it.
use App\Models\Post;
$posts = cache_get_or_add('posts', function() {
return Post::orderBy('created_at', 'desc')->get();
});
toggle($switch)
If given true
, returns false
and vice-versa.
toggle(false);
// returns: true
toggle(true);
// returns: false
generate_password($size = 15)
Returns a random password. Syntactic sugar for str_random()
.
generate_password();
// returns: IZeJx3MeUdDhzE2
auto_cast($value)
Returns the value with the right type so e.g. you can compare type safe with ===
.
gettype(auto_cast('42'));
// returns: integer
gettype(auto_cast('42.0'));
// returns: double
gettype(auto_cast('true'));
// returns: boolean
human_filesize($size)
Returns a human readable form for given bytes. Goes up to Yottabyte.
human_filesize(4223);
// returns: 4.12kB
permutations($array)
Returns a generator with all possible permutations of given array values.
Based on eddiewoulds port port of python code.
$gen = permutations(['foo', 'bar', 'biz']);
iterator_to_array($gen)
// returns: [
// [
// "foo",
// "bar",
// "biz",
// ],
// [
// "foo",
// "biz",
// "bar",
// ],
// [
// "bar",
// "foo",
// "biz",
// ],
// [
// "bar",
// "biz",
// "foo",
// ],
// [
// "biz",
// "foo",
// "bar",
// ],
// [
// "biz",
// "bar",
// "foo",
// ],
// ]
zenith($type)
Wrapper around magic numbers for the Zenith. The types can be:
astronomical
: 108.0nautical
: 102.0civil
: 96.0zenith('civil');
// returns: 96.0
operating_system()
Returns on of the following constants (also see under constants):
macos
windows
linux
bsd
operating_system();
// returns: linux
LINUX
// returns: linux
wikipedia($lemma, $lang = 'en', $return = '')
Link URL to wikipedia for a certain language
wikipedia('Towel Day');
// returns: https://en.wikipedia.org/wiki/Towel_Day
wikipedia('Paris', 'fr', '#')
// returns: https://fr.wikipedia.org/wiki/Paris
wikipedia('Pariz', 'fr', '#')
// returns: #
route_path($path)
Get the path to the Laravel routes folder, similar to app_path()
, see Helpers Documentation. It will append $path
but it's not mandatory.
route_path();
// returns: /var/www/htdocs/laravel/routes
route_path('web.php');
// returns: /var/www/htdocs/laravel/routes/web.php
named_routes($path, $verb)
Returns array of all named routes in a routes file or null
on error. It's possible to pass an HTTP verb/method defined in HTTP_VERBS_LARAVEL
(see below).
named_routes('/var/www/htdocs/laravel/routes/web.php');
// returns: [
// 'laravel.get'
// 'laravel.post'
// ]
named_routes('/var/www/htdocs/laravel/routes/web.php', 'get');
// returns: [
// 'laravel.get'
// ]
scrub_url($url)
Removes the protocol, www and trailing slashes from a URL. You can then e.g. test HTTP vs. HTTPS connections.
scrub_url('https://www.repat.de/');
// returns: 'repat.de'
scrub_url('https://blog.fefe.de/?ts=a262bcdf');
// returns: 'blog.fefe.de/?ts=a262bcdf'
http_status_code($url)
Returns just the status code by sending an empty request with curl. Follows redirect so it will only return the last status code and not e.g. 301 Redirects. Requires ext-curl
.
http_status_code('httpstat.us/500');
// returns: 500
http_status_code('http://repat.de'); // with 301 redirect to https://repat.de
// returns: 200
parse_signed_request($request, $clientSecret, $algo)
Parses a HMAC signed request. Copied from Data Deletion Request Callback - Facebook for Developers. $algo
defaults to sha256
.
$requestString = null; // TODO
parse_signed_request($requestString, env('FACEBOOK_CLIENT_SECRET'));
domain_slug($domain)
Validates a domain and creates a slug. Does not work for subdomains, see sluggify_domain()
instead. Returns null
on a parsing error.
domain_slug('blog.fefe.de')
//returns: blogfefede
domain_slug('blogfefe.de')
//returns: blogfefede
current_route_name()
If the current route has a name, otherwise return null
.
// in routes/web.php
// Route::name('dev.foo')->get('foo', 'Dev\TestController@foo');
// Route::get('bar', 'Dev\TestController@bar');
// in Dev/TestController@foo
current_route_name();
// returns: dev.foo
// in Dev/TestController@foo
current_route_name();
// returns: null
str_icontains($haystack, $needle)
Similar to Str::contains() but case insensitive.
str_icontains('FOOBAR', 'foo');
// returns: true
str_icontains('foobar', 'foo');
// returns: true
str_icontains('foobar', 'FOO');
// returns: true
str_icontains('foobar', 'test');
// returns: false
to_ascii($string)
Removes all non ASCII characters and returns the rest.
to_ascii('René');
// returns: Ren
hyphen2_($string)
Replaces all hyphen ("-") characters with underscore ("_")
hyphen2_('foo-bar');
// returns: foo_bar
_2hypen($string)
Replaces all underscore ("_") characters with hyphen ("-")
hyphen2_('foo_bar');
// returns: foo-bar
str_replace_once($search, $replace, $string)
Same signature as str_replace()
, but as name suggests, replaces only the first occurrence of $search
.
str_replace_once('foo', 'bar', 'foofoo');
// returns: 'barfoo'
title_case_wo_underscore($string)
Title Case but without underscores.
title_case_wo_underscore('foo_bar');
// returns: Foo Bar
// vs.
// title_case('foo_bar')
// returns: Foo_Bar
lorem_ipsum()
Returns an example of the Lorem Ipsum placeholder text.
lorem_ipsum();
// returns:
// Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
sluggify_domain($domain)
Returns a slug version of the domain by exchanging full stops with underscores. str_slug()
does not work with subdomains, as it removes full stops completely.
sluggify_domain('blog.fefe.de');
// returns: blog_fefe_de
str_slug('blog.fefe.de');
// returns: blogfefede
sluggify_domain('blogfefe.de');
// returns: blogfefe_de
str_slug('blogfefe.de');
// returns: blogfefede // same as subdomain on fefe.de
str_remove($string, $remove)
Removes given string(s), numbers or array of strings. Syntactic sugar for str_replace($remove, '', $string)
.
str_remove('foobar', 'bar');
// returns: foo
str_remove('foobar42', ['foo', 'bar']);
// returns: 42
str_remove('foobar42', 42);
// returns: foobar
str_bytes($string)
Returns the amount of bytes in a string.
str_bytes('foobar');
// returns: 6
str_bytes('fooßar');
// returns: 8
regex_list($array)
Creates a string with regex for an OR separated list.
regex_list(['foo', 'bar', '42'])
// returns: \bfoo|\bbar|\b42
base64_url_decode($url)
Decodes a base64-encoded URL. Copied from Data Deletion Request Callback - Facebook for Developers
base64_url_decode('aHR0cHM6Ly9yZXBhdC5kZQ==');
// returns: https://repat.de
str_right($string, $until)
Substring from the right until given string, see also str_left()
. Will return the input string if $until
is not present.
str_right('https://vimeo.com/165053513', '/');
// returns: 165053513
str_left($string, $before)
Syntactic sugar for str_before
to be consistent with str_right()
.
Optional packages suggested by this are required for these functions to work.
markdown2html($markdown)
Uses league/commonmark to transform Markdown into HTML.
$ composer require league/commonmark
markdown2html('# Header');
// returns: <h1>Header</h1>\n
translated_attributes($fqcn)
Uses dimsav/laravel-translatable and Reflection to get the translatedAttributes
attribute of a Model.
$ composer require dimsav/laravel-translatable
use App\Models\Product;
translated_attributes(Product::class);
// returns: ['title', 'description'];
domain($url)
Uses layershifter/tld-extract to return the domain only from a URL, removing protocol, subdomain and path.
$ composer require layershifter/tld-extract
domain('https://repat.de/about?foo=bar');
// returns: repat.de
linkify($string, $protocols = ['http', 'https', 'mail'], $attributes)
Returns the string with all URLs for given protocols made into links. Optionally, attributes for the a tag can be passed.
linkify('https://google.com is a search engine');
// returns: <a href="https://google.com">google.com</a> is a search engine
linkify('https://google.com is a search engine', ['https'], ['target' => '_blank']);
// returns: <a target="_blank" href="https://google.com">google.com</a> is a search engine
embedded_video_url($url)
Returns the embedded version of a given YouTube or Vimeo URL.
embedded_video_url('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
// returns: https://www.youtube.com/embed/dQw4w9WgXcQ
embedded_video_url('https://vimeo.com/50491748');
// returns: https://player.vimeo.com/video/50491748
ul_li_unpack($array, $separator)
Unpacks an associated array into an unordered list. Default separator is :
.
ul_li_unpack(['foo' => 'bar']);
// returns: <ul><li>foo: bar</li></ul>
ul_li_unpack(['foo' => 'bar'], '=>');
// returns: <ul><li>foo=> bar</li></ul>
extract_inline_img($text, $storagePath, $srcPath, $optimize)
Extracts an inline image from a text, saves it on the harddrive and puts in the filename with the src attribute. Can use the spatie/laravel-image-optimizer to optimize images after upload but it's disabled by default.
$ composer require spatie/laravel-image-optimizer
extract_inline_img("<img src='data:image/jpeg;base64,...>", '/var/www/htdocs/laravel/storage/foobar', 'public/images', true);
// returns: <img src="public/images/fj3209fjew93.jpg">
PARETO_HIGH
: 80PARETO_LOW
: 20MARIADB_DEFAULT_STRLEN
: 191HTTP_1_0_VERBS
: [get, head, post]HTTP_1_1_VERBS
: [get, head, post, connect, delete, options, put, trace]HTTP_VERBS
: [get, head, post, connect, delete, options, put, trace, patch]HTTP_VERBS_LARAVEL
: [all, get, head, post, delete, options, put, patch]REGEX_WORD_BOUNDARY
: \bREGEX_IMG_BASE64_SRC
: Regular Expression used to find a base64 encoded image in HTML textREGEX_IMG_BASE64_REPLACE
: Regular Expression used to replace a base64 encoded image in HTML textREGEX_FIRST_RESULT_KEY
: 1MACOS
: macosWINDOWS
: windowsLINUX
: linuxBSD
: bsd