Tworzymy własny service

Tworzymy service aby wyekstrahować logikę do osobnego pliku.Tworzymy app/Services/TagsParsingService.php

Takie podejście ułatwia prace z kodem i pomaga utrzymać porządek. Tu znajduje sie cześć kody który za to odpowiada...wyeksportowana do osobnego pliku.

<?php

namespace App\Services;
//Pamiętajmy o dodaniu namespace
use App\Models\Tag;
//tu możemy używać model
class TagsParsingService
{
public static function parse($text)
{
$list = preg_split('/ +/', $text);
$ids = [];

foreach ($list as $tag) {
$tag = Tag::firstOrCreate(['name' => $tag]);
$ids[] = $tag->id;
}

return $ids;
}
}

Aby teraz użyć takiego service importujemy go za pomocą use do pliku w którym chcemy go używać

namespace App\Http\Controllers\Admin;

use App\Models\Post;
use App\Services\TagsParsingService;

i odwołujemy się jak do metody statycznej

if (isset($data['tags'])) {
$tags = TagsParsingService::parse($data['tags']);
$post->tags()->sync($tags);
}