Defining methods that can be used in multiple controllers (in a short library) in laravel 5

I want to define some methods that can be used in several places or several controllers. Basically, these methods will look like libraries that will execute multiple queries.

My main goal is to avoid rewriting common logic by creating multiple libraries.

Please help me with this.

Thanks in advance:)

+4
source share
4 answers

Depends on what you are trying to do. Here are a few options:

App\Http\Controllers\Controller. .

.

class UserRepository {
    public function getActiveUsers() {
        return Users::with('role')
            ->where('...')
            ->someQueryScopes()
            ->anotherQueryScope()
            ->yetAnotherScope();
    }
}

class SomeController extends Controller {
    public function index(UserRepository $repository) {
        $users = $repository->getActiveUsers();
        return view('users.index')->withUsers($users);
    }
}

- - .

 class UserCreatorService {
    public function create($email, $password){
        $user = User::create(['email' => $email, 'password' => $password]);
        $user->addRole('Subscriber');
        Event::fire(new UserWasCreated($user));
        return $user;
    }
}

class RegisterController extends Controller {
    public function store(Request $request, UserCreatorService $service) {
        $user = $service->create($request->input('email'), $request->input('password'));
        return view('home')->withUser($user);
    }
}
+4

, app, MyLibrary.php

namespace App;

Class MyLibrary {

    public static function sum($a, $b) {
        return $a + $b;
    }

}

config/app.php

'MyLibrary'      => App\MyLibrary::class,

, , .

$result = MyLibrary::sum(4, 5); // your $result now have value of 9
+1

lib functions.php composer.json

...
"autoload": {
    "files": [
      "app/lib/functions.php"
    ],
...

dump-autoload

0

.

Create a folder called helper in the application folder and create a helper class in it. And then use this helper class function in several controllers or views as you want.

0
source

All Articles