Basic Laravel is an MVC framework, it’s clear what should be in Model, View and Controller. But what if you have custom logic for processing data before passing it to the view? Where should it be?
How to Structure Laravel Project
- In the same Controller method?
- Separate private Controller method?
- Static function in Model?
- Separate class, like Service?
- Or, maybe, global helper function without any class?
- Also, I’ve heard Repository is a widely-used pattern?
And the list goes on.
Of course, the correct answer is it depends. But depends on what?
This is what I’m gonna talk about in this course.
The goal is to discuss practical examples of structuring larger Laravel applications, various approaches and patterns. We will analyze existing popular open-source projects and their structure.
Important notice: this course won’t be about design patterns. So fancy keywords like Singleton, Factory, Adapter, Repository etc will be used only when appropriate.
What I will try to do is focus on the practical side: folders, classes and methods, and not on how that pattern actually is called in theory. In reality, every project is actually a mix of patterns, and developers don’t even know how they’re called.
About the Author: LaravelDaily
LaravelDaily is the long-running PHP / Laravel teaching brand of Povilas Korop, one of the most prolific Laravel content creators on the open web. The site has been publishing daily Laravel content for over a decade and now operates a paid course catalog plus the LaravelDaily YouTube channel and a popular weekly newsletter.
The CourseFlix listing carries five LaravelDaily courses covering Laravel project structure, REST API construction, advanced Eloquent ORM patterns, SOLID-principles application in Laravel, and the Laravel + Vue full-stack stack. Material is paid and aimed at Laravel developers ready to move past the framework basics into the patterns that show up in real production codebases.
Watch Online 29 lessons
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Use More Eloquent: Accessors/Mutators, Scopes, Observers & "Magic" Methods Demo | 10:10 | |
| 2 | Controllers and Routes: Where to Put "Extra" Methods? | 08:54 | |
| 3 | Structuring Blade Files: @extends, @yield and Other Commands | 13:18 | |
| 4 | Custom Base Controllers and Base Models | 05:14 | |
| 5 | Configuration: Never Use env() Directly in Controllers/Models | 05:27 | |
| 6 | Form Request Classes for Validation | 04:36 | |
| 7 | User Notifications: Stop Using Mail::send() | 05:51 | |
| 8 | Jobs, Queues and Scheduling Tasks | 05:05 | |
| 9 | Events and Their Listeners | 07:16 | |
| 10 | API Resources for Data Transformation | 09:18 | |
| 11 | Global Helpers, External PHP Classes, Autoloading and PSR-4 | 06:53 | |
| 12 | 1. Single-Responsibility Principle | 06:36 | |
| 13 | 2. Open-Closed Principle | 11:37 | |
| 14 | 3. Liskov Substitution Principle | 04:23 | |
| 15 | 4. Interface Segregation Principle | 05:18 | |
| 16 | 5. Dependency Inversion Principle | 04:44 | |
| 17 | Repositories: to Use or Not to Use? | 09:12 | |
| 18 | When/How to Use Service Classes? | 06:36 | |
| 19 | Traits: Good Practice or Last Resort? | 04:51 | |
| 20 | Dependency injection in PHP and Laravel | 06:31 | |
| 21 | Adapter, Strategy, Factory and Other Fancy Words | 05:29 | |
| 22 | Wait, What About Unit Testing? | 05:35 | |
| 23 | Create Your Own Laravel Package | 09:20 | |
| 24 | Laravel Modules: Package by Nicholas Widart | 07:03 | |
| 25 | Review: Akaunting Open-Source Project Structure | 40:51 | |
| 26 | Review: Laravel.io Community Portal Structure | 12:03 | |
| 27 | Review: MonicaHQ - Personal CRM Project Structure | 41:55 | |
| 28 | Public Website + Adminpanel: Reusing Classes and Features | 12:16 | |
| 29 | Refactoring Big Controller Into Various Classes/Methods | 14:55 |
Get instant access to all 28 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionRelated courses
-
Updated 2y agoReact Js A-Z With Laravel - For Beginner to Advanced Level
By: UdemyThis React Js A-Z With Laravel Course will help you to become a Full Stack Web Developer. React has rapidly become one of the most powerful tools for building W68 hours 1 minute 33 seconds -
Updated 11mo agoReal-Time Data with Laravel Reverb and Vue.js
By: Vue SchoolWant to add real-time data functionality to your applications in Laravel and Vue.js?44 minutes 56 seconds -
Updated 2y agoHow to Create Laravel API
By: LaravelDailyEveryone now is searching for API developers, just look at the Laravel jobs or freelance offers. So, in this course, you will learn how create APIs with Laravel1 hour 40 minutes 20 seconds