takeoo/laravel-service-layer

There is no license information available for the latest version (v0.2.2) of this package.

Lightweight service layer for laravel application!

v0.2.2 2017-03-19 21:46 UTC

This package is auto-updated.

Last update: 2024-04-29 03:38:16 UTC


README

Extra simple, lightweight service manager module for laravel app

Installation

  • Require repository
composer require takeoo/laravel-service-layer
  • Add \Takeoo\Service\TakeooServiceServiceProvider::class to config/app.php "providers" array

  • Run:

  php artisan vendor:publish      

Usage

  • Create new service class (Example.php) anywhere in your project:
//Example.php


namespace  My\Service\Namespace;


use Takeoo\Service;

class MyService extends Service
{
// your code 
}

or if you do not want to extend Service.php just use Service trait;

//Example.php


namespace  My\Service\Namespace;


use Takeoo\Service\Traits;

class MyService 
{
 use Service;
// your code 
}
  • when you created new service class, you have to register it:
  • go to config/service.php
  • add your service to "services" array:
'services' => [
  'Example' => \My\Service\Namespace\Example::class,
]
  • Add Service trait to your Controller.php class (if you extend it with all your controllers) or to every controller class in which you want to use Service layer

By default all services are created as singletons, if you want to create non singleton class, provided its alias in "service.non-singleton" array

Code

In code you can call your service as:

$service = $this->getService("Example");
             

if you want to use autocomplete (tested in JetBrains IDE) add PHPDoc above variable

/**
 * @var \My\Service\Namespace\Example $serivce
 */
$service = $this->getService("Example");
             

or you can always create helper functions for your commonly used services e.g:

/**
 * return \My\Service\Namespace\Example
 */
 public function getExampleService()
 {
  return $this->getService("Example");
 }