# Helper Functions - [Introduction](#introduction) - [Available Methods](#available-methods) ## Introduction Laravel includes a variety of "helper" PHP functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient. ## Available Methods ### Arrays
[array_add](#method-array-add) [array_divide](#method-array-divide) [array_dot](#method-array-dot) [array_except](#method-array-except) [array_fetch](#method-array-fetch) [array_first](#method-array-first) [array_flatten](#method-array-flatten) [array_forget](#method-array-forget) [array_get](#method-array-get) [array_only](#method-array-only) [array_pluck](#method-array-pluck) [array_pull](#method-array-pull) [array_set](#method-array-set) [array_sort](#method-array-sort) [array_where](#method-array-where) [head](#method-head) [last](#method-last)
### Paths
[app_path](#method-app-path) [base_path](#method-base-path) [config_path](#method-config-path) [database_path](#method-database-path) [public_path](#method-public-path) [storage_path](#method-storage-path) [storage_path](#method-storage-path)
### Strings
[camel_case](#method-camel-case) [class_basename](#method-class-basename) [e](#method-e) [ends_with](#method-ends-with) [snake_case](#method-snake-case) [str_limit](#method-str-limit) [starts_with](#method-starts-with) [str_contains](#method-str-contains) [str_finish](#method-str-finish) [str_is](#method-str-is) [str_plural](#method-str-plural) [str_random](#method-str-random) [str_singular](#method-str-singular) [str_slug](#method-str-slug) [studly_case](#method-studly-case) [trans](#method-trans) [trans_choice](#method-trans-choice)
### URLs
[action](#method-action) [route](#method-route) [url](#method-url)
### Miscellaneous
[csrf_token](#method-csrf-token) [dd](#method-dd) [elixir](#method-elixir) [env](#method-env) [event](#method-event) [response](#method-response) [value](#method-value) [view](#method-view) [with](#method-with)
## Method Listing #### `array_add()` {#collection-method .first-collection-method} The `array_add` function adds a given key / value pair to the array if the given key doesn't already exist in the array: $array = array_add(['name' => 'Desk'], 'price', 100); // ['name' => 'Desk', 'price' => 100] #### `array_divide()` {#collection-method} The `array_divide` function returns two arrays, one containing the keys, and the other containing the values of the original array: list($keys, $values) = array_divide(['name' => 'Desk']); // $keys: ['name'] // $values: ['Desk'] #### `array_dot()` {#collection-method} The `array_dot` function flattens a multi-dimensional array into a single level array that uses "dot" notation to indicate depth: $array = array_dot(['foo' => ['bar' => 'baz']]); // ['foo.bar' => 'baz']; #### `array_except()` {#collection-method} The `array_except` method removes the given key / value pairs from the array: $array = ['name' => 'Desk', 'price' => 100]; $array = array_except($array, ['price']); // ['name' => 'Desk'] #### `array_fetch()` {#collection-method} The `array_fetch` method returns a flattened array containing the values of the specified nested element: $array = [ ['developer' => ['name' => 'Taylor']], ['developer' => ['name' => 'Abigail']] ]; $array = array_fetch($array, 'developer.name'); // ['Taylor', 'Abigail']; #### `array_first()` {#collection-method} The `array_first` method returns the first element of an array passing a given truth test: $array = [100, 200, 300]; $value = array_first($array, function ($key, $value) { return $value >= 150; }); // 200 A default value may also be passed as the third parameter to the method. This value will be returned if no value passes the truth test: $value = array_first($array, $callback, $default); #### `array_flatten()` {#collection-method} The `array_flatten` method will flatten a multi-dimensional array into a single level. $array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']]; $array = array_flatten($array); // ['Joe', 'PHP', 'Ruby']; #### `array_forget()` {#collection-method} The `array_forget` method removes a given key / value pair from a deeply nested array using "dot" notation: $array = ['products' => ['desk' => ['price' => 100]]]; array_forget($array, 'products.desk'); // ['products' => []] #### `array_get()` {#collection-method} The `array_get` method retrieves a value from a deeply nested array using "dot" notation: $array = ['products' => ['desk' => ['price' => 100]]]; $value = array_get($array, 'products.desk'); // ['price' => 100] The `array_get` function also accepts a default value, which will be returned if the specific key is not found: $value = array_get($array, 'names.john', 'default'); #### `array_only()` {#collection-method} The `array_only` method will return only the specified key / value pairs from the given array: $array = ['name' => 'Desk', 'price' => 100, 'orders' => 10]; $array = array_only($array, ['name', 'price']); // ['name' => 'Desk', 'price' => 100] #### `array_pluck()` {#collection-method} The `array_pluck` method will pluck a list of the given key / value pairs from the array: $array = [['name' => 'Desk'], ['name' => 'Chair']]; $array = array_pluck($array, 'name'); // ['Desk', 'Chair']; #### `array_pull()` {#collection-method} The `array_pull` method returns and removes a key / value pair from the array: $array = ['name' => 'Desk', 'price' => 100]; $name = array_pull($array, 'name'); // $name: Desk // $array: ['price' => 100] #### `array_set()` {#collection-method} The `array_set` method sets a value within a deeply nested array using "dot" notation: $array = ['products' => ['desk' => ['price' => 100]]]; array_set($array, 'products.desk.price', 200); // ['products' => ['desk' => ['price' => 200]]] #### `array_sort()` {#collection-method} The `array_sort` method sorts the array by the results of the given Closure: $array = [ ['name' => 'Desk'], ['name' => 'Chair'], ]; $array = array_values(array_sort($array, function ($value) { return $value['name']; })); /* [ ['name' => 'Chair'], ['name' => 'Desk'], ] */ #### `array_where()` {#collection-method} The `array_where` function filters the array using the given Closure: $array = [100, '200', 300, '400', 500]; $array = array_where($array, function ($key, $value) { return is_string($value); }); // [1 => 200, 3 => 400] #### `head()` {#collection-method} The `head` function simply returns the first element in the given array: $array = [100, 200, 300]; $first = head($array); // 100 #### `last()` {#collection-method} The `last` function returns the first element in the given array: $array = [100, 200, 300]; $last = head($array); // 300 ## Paths #### `app_path()` {#collection-method} The `app_path` function returns the fully qualified path to the `app` directory: $path = app_path(); You may also use the `app_path` function to generate a fully qualified path to a given file relative to the application directory: $path = app_path('Http/Controllers/Controller.php'); #### `base_path()` {#collection-method} The `base_path` function returns the fully qualified path to the project root: $path = base_path(); You may also use the `base_path` function to generate a fully qualified path to a given file relative to the application directory: $path = base_path('vendor/bin'); #### `config_path()` {#collection-method} The `config_path` function returns the fully qualified path to the application configuration directory: $path = config_path(); #### `database_path()` {#collection-method} The `database_path` function returns the fully qualified path to the application's database directory: $path = database_path(); #### `public_path()` {#collection-method} The `public_path` function returns the fully qualified path to the `public` directory: $path = public_path(); #### `storage_path()` {#collection-method} The `storage_path` function returns the fully qualified path to the `storage` directory: $path = storage_path(); You may also use the `storage_path` function to generate a fully qualified path to a given file relative to the storage directory: $path = storage_path('app/file.txt'); ## Strings #### `camel_case()` {#collection-method} The `camel_case` function converts the given string to `camelCase`: $camel = camel_case('foo_bar'); // fooBar #### `class_basename()` {#collection-method} The `class_basename` returns the class name of the given class with the class' namespace removed: $class = class_basename('Foo\Bar\Baz'); // Baz #### `e()` {#collection-method} The `e` function runs `htmlentities` over the given string: echo e('foo'); #### `ends_with()` {#collection-method} The `ends_with` function determines if the given string ends with the given value: $value = ends_with('This is my name', 'name'); // true #### `snake_case()` {#collection-method} The `snake_case` function converts the given string to `snake_case`: $snake = snake_case('fooBar'); // foo_bar #### `str_limit()` {#collection-method} The `str_limit` function limits the number of characters in a string. The function accepts a string as its first argument and the maximum number of resulting characters as its second argument: $value = str_limit('The PHP framework for web artisans.', 7); // The PHP... #### `starts_with()` {#collection-method} The `starts_with` function determines if the given string begins with the given value: $value = starts_with('This is my name', 'This'); // true #### `str_contains()` {#collection-method} The `str_contains` function determines if the given string contains the given value: $value = str_contains('This is my name', 'my'); // true #### `str_finish()` {#collection-method} The `str_finish` function adds a single instance of the given value to a string: $string = str_finish('this/string', '/'); // this/string/ #### `str_is()` {#collection-method} The `str_is` function determines if a given string matches a given pattern. Asterisks may be used to indicate wildcards: $value = str_is('foo*', 'foobar'); // true $value = str_is('baz*', 'foobar'); // false #### `str_plural()` {#collection-method} The `str_plural` function converts a string to its plural form. This function currently only supports the English language: $plural = str_plural('car'); // cars $plural = str_plural('child'); // children #### `str_random()` {#collection-method} The `str_random` function generates a random string of the specified length: $string = str_random(40); #### `str_singular()` {#collection-method} The `str_singular` function converts a string to its singular form. This function currently only supports the English language: $singular = str_singular('cars'); // car #### `str_slug()` {#collection-method} The `str_slug` function generates a URL friendly "slug" from the given string: $title = str_slug("Laravel 5 Framework", "-"); // laravel-5-framework #### `studly_case()` {#collection-method} The `studly_case` function converts the given string to `StudlyCase`: $value = studly_case('foo_bar'); // FooBar #### `trans()` {#collection-method} The `trans` function translates the given language line using your [localization files](/docs/{{version}}/localization): echo trans('validation.required'): #### `trans_choice()` {#collection-method} The `trans_choice` function translates the given language line with inflection: $value = trans_choice('foo.bar', $count); ## URLs #### `action()` {#collection-method} The `action` function generates a URL for the given controller action. You do not need to pass the full namespace to the controller. Instead, pass the controller class name relative to the `App\Http\Controllers` namespace: $url = action('HomeController@getIndex'); If the method accepts route parameters, you may them as the second argument to the method: $url = action('UserController@profile', ['id' => 1]); #### `route()` {#collection-method} The `route` function generates a URL for the given named route: $url = route('routeName'); If the route accepts parameters, you may them as the second argument to the method: $url = route('routeName', ['id' => 1]); #### `url()` {#collection-method} The `url` function generates a fully qualified URL to the given path: echo url('user/profile'); echo url('user/profile', [1]); ## Miscellaneous #### `csrf_token()` {#collection-method} The `csrf_token` function retrieves the value of the current CSRF token: $token = csrf_token(); #### `dd()` {#collection-method} The `dd` function dumps the given variable and ends execution of the script: dd($value); #### `elixir()` {#collection-method} The `elixir` function gets the path to the versioned [Elixir](/docs/{{version}}/elixir) file: elixir($file); #### `env()` {#collection-method} The `env` function gets the value of an environment variable or returns a default value: $env = env('APP_ENV'); // Return a default value if the variable doesn't exist... $env = env('APP_ENV', 'production'); #### `event()` {#collection-method} The `event` function dispatches the given [event](/docs/{{version}}/events) to its listeners: event(new UserRegistered($user)); #### `response()` {#collection-method} The `response` function creates a [response](/docs/{{version}}/responses) instance or obtains an instance of the response factory: return response('Hello World', 200, $headers); return response()->json(['foo' => 'bar'], 200, $headers); #### `value()` {#collection-method} The `value` function's behavior will simply return the value it is given. However, if you pass a `Closure` to the function, the `Closure` will be executed the its result will be returned: $value = value(function() { return 'bar'; }); #### `view()` {#collection-method} The `view` function retrieves a [view](/docs/{{version}}/views) instance: return view('auth.login'); #### `with()` {#collection-method} The `with` function return the value it is given. This function is primarily useful for method chaining where it would otherwise be impossible: $value = with(new Foo)->work();