Blog


Globale Funktionen in Laravel

  • 29.05.2017
  • Laravel
  • globale Funktion
  • debug
  • truncate
Oft ist es praktisch globale Funktionen in Laravel zu haben, z. B. für eine schnelle Debug-Ausgabe oder um einen String zu kürzen. Um dabei nicht jedes mal eine Klasse erstellen zu müssen bzw. die Funktionalität immer und überall einsetzen zu können sind folgende Schritte notwendig.

Datei für globale Funktionen anlegen

Eine neue Datei z. B. app/Http/helpers.php anlegen.

Funktionen schreiben

Als erste Beispielfunktion implementiere ich eine einfache Debug-Ausgabe, die im Gegensatz zur Laravel Methode dd nicht das Skript abbricht. Somit sind auch mehrere Debug-Ausgaben pro Seitenaufruf möglich, was in Schleifen sehr nützlich ist.
/**
* prints the content of an variable
*
* @param mixed $var variable to debug
* @param string $name variable name
*/
function debug($var='', $name='var')
{
echo '<pre>';
echo $name .' =<br/>';
print_r($var);
echo '</pre>';
}
Eine weitere nützliche Funktion ist das Kürzen von Texten nach ganzen Wörtern. Dies kann z. B. für Teaser von Blogeinträgen benutzt werden.
/**
* truncate string at word border
*
* @param string $str string to truncate
* @param int $len max string length
* @return string truncated string
*/
function truncate($str, $len)
{
return mb_strlen($str) > $len ? preg_replace('/[^\s]*$/', '', mb_substr($str, 0, $len)) .' &hellip;' : $str;
}
Ob am Ende des gekürzten Strings ein … (&hellip;) kommt ist Geschmackssache und kann leicht entfernt werden.

helpers.php einbinden

Zum Einbinden der neuen Funktionen muss nun die gerade erstellte Datei helpers.php registriert werden. Dafür in der composer.js in der Sektion autoload folgenden Eintrag hinzufügen.
{
...
"autoload": {
"files": [
"app/Http/helpers.php"
]
},
...
}
Nun müssen noch die Autoloads mittels des Composers neu erzeugt werden. Dazu in die Bash gegen und im Hauptverzeichnis der Laravel-Instanz folgenden Befehl ausführen.
composer dump-autoload
Ab sofort können die Funktionen debug und truncate überall verwendet werden.