Zum Hauptinhalt springen

Was sind Helfer-Funktionen

Laravel liefert viele globale PHP-Funktionen (Helfer) mit. Das Framework selbst nutzt sie intern; Sie können sie aber überall in Ihrer Anwendung einsetzen. Grobe Kategorien:
  • Array/Objekt – Klasse Arr:: und Funktionen wie data_get()
  • Zahlen – Klasse Number::
  • Pfadeapp_path(), storage_path() u. Ä.
  • URLsroute(), url(), asset() u. Ä.
  • Sonstige – häufig genutzte Utilities wie config(), collect(), auth()
Helfer-Funktionen sind ohne use überall verfügbar. Für die Klassen Arr und Number müssen Sie z. B. use Illuminate\Support\Arr; importieren.

Array-Helfer (Arr-Klasse)

Arr::get() – verschachtelte Werte per Punkt-Notation

Sicherer Zugriff auf verschachtelte Arrays. Fehlt der Schlüssel, wird ein Default zurückgegeben.
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'

// Default-Wert
$charset = Arr::get($config, 'database.connections.mysql.charset', 'utf8mb4');
// 'utf8mb4'
Die globale Funktion data_get() bietet die gleiche Funktionalität – auch für Arrayable-Objekte wie Eloquent-Beziehungen.

Arr::set() – Wert in verschachteltem Array setzen

use Illuminate\Support\Arr;

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

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

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

Arr::has() – Schlüssel-Existenz prüfen

use Illuminate\Support\Arr;

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

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

// Mehrere Schlüssel
$hasAll = Arr::has($array, ['product.name', 'product.price']);
// true

Arr::only() / Arr::except() – filtern/ausschließen

Ideal, um aus Request- oder Konfigurationsdaten nur die benötigten (oder ausschließlich sichere) Felder zu behalten.
use Illuminate\Support\Arr;

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

$safe = Arr::only($user, ['id', 'name', 'email']);

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

Arr::pluck() – Werte aus verschachteltem Array extrahieren

use Illuminate\Support\Arr;

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

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

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

Arr::first() / Arr::last() – erstes/letztes passendes Element

use Illuminate\Support\Arr;

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

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

$first = Arr::first($prices, fn ($price) => $price >= 500, 0);
// 0

$last = Arr::last($prices);
// 120

Arr::flatten() – mehrdimensional platt machen

use Illuminate\Support\Arr;

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

$allTags = Arr::flatten($tags);

Arr::wrap() – Wert sicher als Array

use Illuminate\Support\Arr;

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

Arr::sort() – Werte sortieren

use Illuminate\Support\Arr;

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

$products = [
    ['name' => 'Laptop', 'price' => 120000],
    ['name' => 'Maus', 'price' => 3500],
    ['name' => 'Tastatur', 'price' => 8000],
];

$byPrice = Arr::sort($products, fn ($p) => $p['price']);

Arr::dot() / Arr::undot() – flach/verschachtelt

use Illuminate\Support\Arr;

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

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

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

Arr::join() – Array zu String

use Illuminate\Support\Arr;

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

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

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

data_get() – Zugriff auf verschachtelte Daten

Die generische Variante von Arr::get(). Funktioniert auch mit Objekten, Eloquent-Modellen und Collections.
$users = [
    ['name' => 'Yamada Taro', 'address' => ['city' => 'Tokio']],
    ['name' => 'Suzuki Hanako', 'address' => ['city' => 'Osaka']],
];

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

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

Zahl-Helfer (Number-Klasse)

Number::format() – lesbar formatieren

use Illuminate\Support\Number;

Number::format(1234567.89);
Number::format(1234567.89, precision: 0, locale: 'de');

Number::currency() – Währung

use Illuminate\Support\Number;

Number::currency(10000, 'EUR', locale: 'de');
Number::currency(29.99, 'USD');

Number::fileSize() – Dateigröße

use Illuminate\Support\Number;

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

Number::abbreviate() – große Zahlen abkürzen

use Illuminate\Support\Number;

Number::abbreviate(1000);    // '1K'
Number::abbreviate(1500000); // '1.5M'

Number::percentage() – Prozent

use Illuminate\Support\Number;

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

Pfad-Helfer

Liefern absolute Pfade – unabhängig von der Umgebung.
app_path();
app_path('Http/Controllers/UserController.php');
base_path('composer.json');
config_path('database.php');
database_path('migrations');
storage_path('app/uploads');
public_path('css/app.css');
resource_path('views/welcome.blade.php');

URL-Helfer

route() – URL für benannte Route

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

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

url() – absolute URL

$url = url('user/profile');

$current  = url()->current();
$full     = url()->full();
$previous = url()->previous();

asset() – URL für statische Assets

$url = asset('img/logo.png');

to_route() – Redirect zu benannter Route

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

return to_route('users.show', ['user' => 1], 302, ['X-Custom' => 'value']);

Weitere häufig genutzte Helfer

config()

$timezone = config('app.timezone');
$debug = config('app.debug', false);
config(['app.locale' => 'de']);

collect()

$collection = collect([1, 2, 3, 4, 5]);
$sum = collect([1, 2, 3])->sum(); // 6
collect() ist der Einstiegspunkt zu Collections. Details unter Collections.

auth()

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

if (auth()->check()) {
    // Angemeldet
}

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

blank() / filled()

blank() bewertet null, leere Strings, reine Leerzeichen sowie leere Collections/Arrays als true. filled() ist das Gegenteil.
blank('');       // true
blank('   ');    // true
blank(null);     // true
blank(collect()); // true

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

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

abort() / abort_if() / abort_unless()

abort(404);
abort(403, 'Kein Zugriff auf diese Seite.');

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));
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');
Best Practice: env() nur in config/-Dateien verwenden und über config() darauf zugreifen. Ist der Konfigurations-Cache (php artisan config:cache) aktiv, liefert env() sonst evtl. nicht die erwarteten Werte.

Wann Arr:: und wann collect()?

Arr:: operiert auf normalen PHP-Arrays, collect() liefert ein Collection-Objekt.
use Illuminate\Support\Arr;

// Arrays direkt manipulieren → Arr
$filtered = Arr::where($items, fn ($v) => $v > 0);

// Mehrere Operationen als Chain → collect()
$result = collect($items)
    ->filter(fn ($v) => $v > 0)
    ->map(fn ($v) => $v * 2)
    ->values()
    ->all();
Eloquent-Ergebnisse sind bereits Collections – Sie müssen sie nicht extra mit collect() einpacken. Für einfache Array-Manipulation ist Arr:: oft kürzer.

Zusammenfassung

HelferZweck
Arr::get($array, 'a.b.c', $default)Sicherer Zugriff auf verschachtelte Werte
Arr::only($array, $keys)Nur bestimmte Schlüssel behalten
Arr::except($array, $keys)Bestimmte Schlüssel entfernen
Arr::pluck($array, 'key')Werte aus verschachtelten Arrays einsammeln
Arr::flatten($array)Mehrdimensional flach machen
Arr::wrap($value)In Array einpacken
data_get($target, 'a.*.b')Zugriff mit Wildcard
Number::format($n)Zahl lesbar formatieren
Number::currency($n, 'EUR')Währung
Number::fileSize($bytes)Dateigröße
route('name', $params)URL zu benannter Route
url('path')Absolute URL
asset('path')Asset-URL
config('key', $default)Konfigurationswert
collect($array)Collection erzeugen
auth()->user()Aktueller Nutzer
blank($value)Leere-Prüfung
filled($value)Nicht-leer-Prüfung
abort(403)HTTP-Fehler
dispatch($job)Job in die Queue
env('KEY', $default)Umgebungsvariable
Arr:::
  • Direkte Array-Operationen (verschachtelte Keys, Filter)
  • Keine Collection-Overhead nötig
  • Ergebnisse als Array
collect():
  • Mehrere Operationen in einer Chain
  • Eloquent-Ergebnisse weiterverarbeiten
  • Collection-spezifische Methoden wie map, filter, groupBy
Zuletzt geändert am 13. Juli 2026