> For the complete documentation index, see [llms.txt](https://jjrdev.gitbook.io/luna/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jjrdev.gitbook.io/luna/o-basico/services.md).

# Services

Um controller executando regra de negócio gera um problema, reutilizar funções de um controller é extremamente chato, uma vez que ele exige receber um $response (e as vezes um $request), por isso é recomendavel que se utilize services para desenvolver a regra de negócio do projeto e a execute dentro do controller.

Arquivos de services podem ser criados em `/app/Services` como:

```php
namespace App\Services;

class Product {
    public function getProduct($id) {
        // ...
    }
}
```

Com o service criado, consumi-lo é simples:

```php
use \App\Services\Product as ProductService;

class Product {
    public static function getProduct($request, $response) {
        // ...
        
        $productService = new ProductService();
        return $productService->getProduct($id);
    }
}
```

Agora é simples reutilizar as funções dos services conforme necessário.
