namespace App\Repositories;
use App\Interfaces\PostRepositoryInterface;
use App\Models\Post;
use App\Repositories\Repository;
class PostRepository extends Repository implements PostRepositoryInterface
{
public function __construct(Post $post)
{
parent::__construct($post);
}
}
namespace App\Services;
use App\Interfaces\PostRepositoryInterface;
class PostService
{
public function __construct(
protected PostRepositoryInterface $postRepository,
) {}
}
namespace App\Http\Controllers;
use App\Services\PostService;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function __construct(
protected PostService $postService
) {}
public function index()
{
$posts = $this->postService->getAllPosts();
return view('posts.index', compact('posts'));
}
public function store(Request $request)
{
$post = $this->postService->createPost($request->validated());
return redirect()->route('posts.show', $post);
}
}