Passer au contenu principal

Que sont les helpers

Laravel fournit de nombreuses fonctions PHP globales (helpers). La plupart sont utilisées en interne par le framework, mais elles sont librement utilisables dans votre application. Elles se répartissent en grandes catégories :
  • Tableaux et objets — classe Arr:: et fonctions comme data_get()
  • Nombres — classe Number::
  • Cheminsapp_path(), storage_path(), etc.
  • URLroute(), url(), asset(), etc.
  • Autresconfig(), collect(), auth() et autres utilitaires
Les fonctions helper sont accessibles sans use. Pour les classes Arr ou Number, importez avec use Illuminate\Support\Arr;.

Helpers de tableau (classe Arr)

Arr::get() — Accès à une valeur imbriquée

Récupère de façon sûre une valeur imbriquée avec la notation foo.bar.baz.
use Illuminate\Support\Arr;

$config = [
    'database' => [
        'connections' => [
            'mysql' => ['host' => '127.0.0.1', 'port' => 3306],
        ],
    ],
];

$host = Arr::get($config, 'database.connections.mysql.host');
// '127.0.0.1'

// Valeur par défaut
$charset = Arr::get($config, 'database.connections.mysql.charset', 'utf8mb4');
// 'utf8mb4'
data_get() a la même fonction et gère aussi les objets Arrayable comme les relations Eloquent.

Arr::set() — Définir une valeur imbriquée

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

Arr::set($array, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]

Arr::has() — Existence d’une clé

use Illuminate\Support\Arr;

$array = ['product' => ['name' => 'Desk', 'price' => 100]];

$hasName = Arr::has($array, 'product.name');
// true

// Toutes les clés présentes ?
$hasAll = Arr::has($array, ['product.name', 'product.price']);
// true

Arr::only() / Arr::except() — Filtrer les clés

Utile pour ne garder ou exclure certains champs.
use Illuminate\Support\Arr;

$user = [
    'id' => 1,
    'name' => 'Taro Yamada',
    'email' => '[email protected]',
    'password' => 'secret',
    'role' => 'admin',
];

// Ne garder que certaines clés
$safe = Arr::only($user, ['id', 'name', 'email']);

// Retirer 'password'
$public = Arr::except($user, ['password']);

Arr::pluck() — Extraire une clé

use Illuminate\Support\Arr;

$records = [
    ['user' => ['id' => 1, 'name' => 'Taro Yamada']],
    ['user' => ['id' => 2, 'name' => 'Hanako Suzuki']],
];

$names = Arr::pluck($records, 'user.name');
// ['Taro Yamada', 'Hanako Suzuki']

// Utiliser une clé personnalisée
$nameById = Arr::pluck($records, 'user.name', 'user.id');
// [1 => 'Taro Yamada', 2 => 'Hanako Suzuki']

Arr::first() / Arr::last()

use Illuminate\Support\Arr;

$prices = [150, 80, 200, 50, 120];

// Premier prix >= 100
$first = Arr::first($prices, fn ($price) => $price >= 100);
// 150

// Valeur par défaut
$first = Arr::first($prices, fn ($price) => $price >= 500, 0);
// 0

// Dernier élément
$last = Arr::last($prices);
// 120

Arr::flatten() — Aplatir un tableau

use Illuminate\Support\Arr;

$tags = [
    'frontend' => ['html', 'css', 'javascript'],
    'backend'  => ['php', 'laravel', 'mysql'],
];

$allTags = Arr::flatten($tags);
// ['html', 'css', 'javascript', 'php', 'laravel', 'mysql']

Arr::wrap() — Envelopper dans un tableau

Enveloppe la valeur dans un tableau si elle n’en est pas déjà un. null devient [].
use Illuminate\Support\Arr;

Arr::wrap('Laravel');
// ['Laravel']

Arr::wrap(['Laravel', 'PHP']);
// ['Laravel', 'PHP']

Arr::wrap(null);
// []

Arr::sort() — Trier par valeur

use Illuminate\Support\Arr;

$fruits = ['banana', 'apple', 'cherry'];
$sorted = Arr::sort($fruits);
// ['apple', 'banana', 'cherry']

// Tri via une closure
$products = [
    ['name' => 'PC portable', 'price' => 120000],
    ['name' => 'Souris', 'price' => 3500],
    ['name' => 'Clavier', 'price' => 8000],
];

$byPrice = Arr::sort($products, fn ($product) => $product['price']);
// Ordre : Souris, Clavier, PC portable

Arr::dot() / Arr::undot() — Conversion en notation point

use Illuminate\Support\Arr;

$nested = [
    'user' => [
        'profile' => ['name' => 'Taro Yamada', 'age' => 28],
    ],
];

$dotted = Arr::dot($nested);
// ['user.profile.name' => 'Taro Yamada', 'user.profile.age' => 28]

$restored = Arr::undot($dotted);

Arr::join() — Concatener en chaîne

use Illuminate\Support\Arr;

$items = ['PHP', 'Laravel', 'MySQL'];

Arr::join($items, ', ');
// 'PHP, Laravel, MySQL'

// Séparateur différent avant le dernier
Arr::join($items, ', ', ' et ');
// 'PHP, Laravel et MySQL'

data_get() — Accès générique

Version étendue de Arr::get(), qui gère tableaux, objets, modèles Eloquent et collections.
$users = [
    ['name' => 'Taro Yamada', 'address' => ['city' => 'Tokyo']],
    ['name' => 'Hanako Suzuki', 'address' => ['city' => 'Osaka']],
];

$city = data_get($users, '0.address.city');
// 'Tokyo'

// Joker
$cities = data_get($users, '*.address.city');
// ['Tokyo', 'Osaka']

Helpers de nombres (classe Number)

Number::format()

use Illuminate\Support\Number;

Number::format(1234567.89);
// '1,234,567.89'

Number::format(1234567.89, precision: 0, locale: 'fr');
// '1 234 568'

Number::currency()

use Illuminate\Support\Number;

Number::currency(10000, 'EUR', locale: 'fr');
// '10 000,00 €'

Number::currency(29.99, 'USD');
// '$29.99'

Number::fileSize()

use Illuminate\Support\Number;

Number::fileSize(1024);
// '1 KB'

Number::fileSize(1024 * 1024 * 2.5);
// '2.5 MB'

Number::abbreviate()

use Illuminate\Support\Number;

Number::abbreviate(1000);
// '1K'

Number::abbreviate(1500000);
// '1.5M'

Number::percentage()

use Illuminate\Support\Number;

Number::percentage(75.5, precision: 1);
// '75.5%'

Helpers de chemin

Récupèrent les chemins des répertoires de l’application, correctement peu importe l’environnement.
// Chemin absolu de app/
app_path();
// /var/www/html/app

// app/Http/Controllers/UserController.php
app_path('Http/Controllers/UserController.php');

// Racine du projet
base_path('composer.json');

// Répertoire config
config_path('database.php');

// Répertoire database
database_path('migrations');

// Répertoire storage
storage_path('app/uploads');

// Répertoire public
public_path('css/app.css');

// Répertoire resources
resource_path('views/welcome.blade.php');

Helpers d’URL

route() — URL d’une route nommée

// Route : Route::get('/users/{user}', ...)->name('users.show');

// URL absolue
$url = route('users.show', ['user' => 1]);
// 'https://example.com/users/1'

// URL relative
$url = route('users.show', ['user' => 1], false);
// '/users/1'

url() — URL absolue d’un chemin

$url = url('user/profile');
// 'https://example.com/user/profile'

// Récupération d'un UrlGenerator
$current  = url()->current();
$full     = url()->full();
$previous = url()->previous();

asset() — URL d’un asset statique

$url = asset('img/logo.png');
// 'https://example.com/img/logo.png'

to_route() — Redirection vers une route nommée

return to_route('users.show', ['user' => 1]);

// Avec code et en-têtes
return to_route('users.show', ['user' => 1], 302, ['X-Custom' => 'value']);

Autres helpers courants

config()

// Lecture avec notation point
$timezone = config('app.timezone');
// 'Europe/Paris'

// Avec défaut
$debug = config('app.debug', false);

// Modification en runtime (portée de la requête)
config(['app.locale' => 'fr']);

collect()

$collection = collect([1, 2, 3, 4, 5]);

$sum = collect([1, 2, 3])->sum(); // 6
collect() est le point d’entrée essentiel des collections. Voir Collections.

auth()

$user = auth()->user();

if (auth()->check()) {
    // Connecté
}

// Autre garde
$admin = auth('admin')->user();

blank() / filled()

blank() renvoie true pour null, chaîne vide ou d’espaces, collection/tableau vide. filled() c’est l’inverse.
blank('');         // true
blank('   ');      // true
blank(null);       // true
blank(collect()); // true

blank(0);      // false
blank(false);  // false

filled('hello'); // true
filled(0);       // true

abort() / abort_if() / abort_unless()

abort(404);
abort(403, 'Vous n\'avez pas accès à cette page.');

abort_if(! auth()->user()->isAdmin(), 403);

abort_unless(auth()->check(), 401);

dd() / dump()

dd($user);
dd($user, $orders, $config);

dump($query);

dispatch()

dispatch(new App\Jobs\SendWelcomeEmail($user));

// Synchrone
dispatch_sync(new App\Jobs\GenerateReport($data));

encrypt() / decrypt()

$encrypted = encrypt('sensitive-value');
$decrypted = decrypt($encrypted);

env()

$debug = env('APP_DEBUG', false);
$dbHost = env('DB_HOST', '127.0.0.1');
N’appelez pas env() dans les contrôleurs ou services. Utilisez-le dans les fichiers de config/ et accédez via config(). Avec php artisan config:cache, env() peut ne pas renvoyer la valeur attendue.

Arr vs collect()

Arr:: opère sur des tableaux PHP standard ; collect() retourne un objet Collection.
use Illuminate\Support\Arr;

// Opération sur un tableau → Arr
$filtered = Arr::where($items, fn ($v) => $v > 0);
// Résultat : tableau

// Chaînage → collect()
$result = collect($items)
    ->filter(fn ($v) => $v > 0)
    ->map(fn ($v) => $v * 2)
    ->values()
    ->all();
// Résultat : tableau (via all())
Les résultats Eloquent sont déjà des collections. collect() n’est pas nécessaire dans ce cas. Pour des opérations simples, Arr:: est plus léger.

Récapitulatif

HelperRôle
Arr::get($array, 'a.b.c', $default)Accès imbriqué sécurisé
Arr::only($array, $keys)Ne garder que les clés indiquées
Arr::except($array, $keys)Retirer les clés
Arr::pluck($array, 'key')Extraire les valeurs d’une clé
Arr::flatten($array)Aplatir un tableau
Arr::wrap($value)Garantir un tableau
data_get($target, 'a.*.b')Accès générique avec joker
Number::format($n)Formater un nombre
Number::currency($n, 'EUR')Formater une devise
Number::fileSize($bytes)Taille de fichier lisible
route('name', $params)URL d’une route nommée
url('path')URL absolue
asset('path')URL d’asset
config('key', $default)Configuration
collect($array)Créer une Collection
auth()->user()Utilisateur connecté
blank($value)Test de « vide »
filled($value)Non vide
abort(403)Exception HTTP
dispatch($job)Mettre en file
env('KEY', $default)Variable d’environnement
Utiliser Arr:: :
  • Opérations simples sur tableaux (accès imbriqué, filtrage de clés)
  • Pas besoin de l’overhead d’un objet Collection
  • Conserver le résultat en tableau
Utiliser collect() :
  • Chaîner plusieurs opérations
  • Enrichir un résultat Eloquent (déjà collection)
  • Utiliser des méthodes propres aux collections (map, filter, groupBy)
Dernière modification le 13 juillet 2026