Lumen eigene Klassen verwenden

Wenn man in Laravel oder Lumen eigene Klassen verwenden will, geht das relativ einfach. Aber wenn man es nicht genau richtig macht funktioniert gar nichts mehr.

Angenommen man hat eine Klasse:

<?php
namespace ulrischa;
class Klasse
{

… und will diese in routes/web.php von Laravel verwenden:

<?php
namespace App;
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$router->get('/blabla', function(){
    $c= new Klasse();
    echo $c->aufruf();
});

… wird das nicht klappen. Aber es funktioniert eigentlich genauso wie beim Autoloading mit Composer.

Folgendes ist zu tun:

  1. Die Datei mit der eigene Klasse irgendwo im Laravelverzeichnis ablegen. Beispielsweise unter App/ulrischa/Klasse.php
  2. Im Laravel Wurzelverzeichnis in der Datei composer.json den Namespace ulrischa dem Ablagepfad App/ulrischa/ zuweisen. Das geht im Abschnitt autoload:
"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/",
	    "ulrischa\\": "app/ulrischa"
        }
    },
  1. In der Datei routes/web.php noch den Namespace verwenden:

<?php
namespace App;
use ulrischa\Klasse;
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/
$router->get('/blabla', function(){
    $c= new Klasse();
    echo $c->aufruf();
});
  1. Im Wurzelverzeichnis von laravel in der Kommandozeile: composer dump-autoload eingeben.

Wichtig: Nun kein include oder require mehr verwenden um die Datei über php zu laden. Das wird nun von Composer erledigt



Als erster einen Kommentar schreiben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.