When comparing Fat-Free Framework vs Laravel 5, the Slant community recommends Laravel 5 for most people. In the question“What are the best PHP frameworks?” Laravel 5 is ranked 2nd while Fat-Free Framework is ranked 3rd. The most important reason people chose Laravel 5 is:
With migrations, powerful and intuitive Eloquent CRUD, resource routing, and simple JSON response out of the box, a complete REST API can be written in hours.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Simple development set up
Pro Lightweight without losing functionality
The framework is very lightweight and fast. Even though it's pretty light, it still does not lose a lot of functionality.
Pro Shortened development time
Building an application that processes a URL (display a page, submit a form, invoke Ajax, etc.) requires very little code and can be achieved very quickly. Allows developers to focus on the application itself and not the plumbing.
Pro Easy to get started
After you download the framework it is very simple to get an app up and running very quickly. Makes it easy for newer PHP and web app developers to start using a MVC framework.
Pro Very stable
You know those frameworks that have updated 5 times during your own development phase? Well, F3 sees one or two updates per year. Never had any issues updating or upgrading. F3 just works.
Pro ORM supports sql, nosql, and jig
Pro Highly modular
Virtually everything is modular. You can choose which modules and libraries to include and to keep the framework as lightweight as possible.
Pro FREE structure
Pro No canned coding/directory structure
Freedom to structure your projects' directories and codes as you wish.
F3 is a non-opinionated framework : you are entirely free to use the files/API/assets structure that you love.
Following a minimalistic approach, F3 tends to avoid adding code and structure that are not strictly necessary, while focusing on what really matters : coding your solution; actually you learn F3 while implementing/coding your project/webapp
Pro Multiple view engines
Default view engine is superb and can also work with varieties of PHP view engines including Twig.
Pro Vibrant community behind the framework
The community is responsive and helpful in clarifying the aspects of the framework.
Pro Very little spin up time
The time to go from knowing nothing about Fat-Free to getting a project completed is very reduced compared to other bulky frameworks.
Pro Comprehensive documentation and API reference
Concise and to the point documentation. Includes many examples and complete API reference.
Pro Unit testing toolkit
Pro No composer, curl or dependency injectors
You download a zip file and use it by placing require(); statement. No need to use composer, curl or any dependency injector which sometime become a great pain.
Pro Very little not included by default
In a framework that's so small, it puts the rest to shame.
Pro Self documenting code
Pro Good documentation
With many examples which are easy to follow by new users.
Pro Good for building RESTful APIs
With migrations, powerful and intuitive Eloquent CRUD, resource routing, and simple JSON response out of the box, a complete REST API can be written in hours.
Pro Comes with an excellent built-in ORM
Laravel's Eloquent ORM is a simple and fast Object-Relational Mapping which helps with organizing the application's database. It supports the most popular databases (MySQL, Postgres, SQLite, etc.) out of the box.
Pro Good documentation
Laravel's documentation is thorough and very good. It covers everything and is very helpful to experienced and new users alike.
Pro Handles event queuing
Laravel supports event queuing and it does so in a very simple way. To create an event that should be queued just run:
php artisan handler:event SendPurchaseConfirmation --event=PodcastWasPurchased --queued
This creates a handler that implements the Illuminate\Contracts\Queue\ShouldBeQueued
interface. Now when this handler is called it will automatically be queued by the event dispatcher.
Pro Comes with its own CLI
Laravel comes out of the box with it's own CLI called Artisan. With Artisan developers can do several different tasks such as migrating databases, seeding databases, clearing the cache and much much more.
Pro Easy to write web apps with authentication
Laravel comes with Authentication capabilities and a fully-powered Auth class out of the box. For passwords it uses bcrypt.
Pro Easy to learn
Pro Gives developers a great degree of freedom in how they set up their project structure
Laravel allows for free configuration and does not force developers to use a single project structure, instead they can change it to how they wish.
Pro Can use Symfony components
Laravel uses many libraries built for the Symfony PHP framework. Many of these libraries are well-built and have been tested by users before. Since the point of using a web framework is to shorten development time and to avoid reinventing the wheel for problems that have already been solved, then it's logical for a framework to use libraries already built to solve problems that have already been solved.
Pro Extremely powerful template system
Laravel has a powerful template system called Blade. It's quite similar to Twig or Moustache with lots of curly braces but the real power comes from the usage of PHP code directly in the view. Blade templates compile directly to raw PHP and are processed in the server when a request is made.
Pro Gulp tasks in the form of Laravel Elixir
In Laravel 5.0 they added Laravel Elixir, which provides an API for using Gulp tasks for Laravel applications. Elixir supports several CSS preprocessors and even some test tools. But it's still in the early stages of development and it will be developed even further in the following releases. With more methods and more Gulp tasks supported.
Pro Great Ecosystem
Has a great Ecosystem with SAAS like: Forge, Envoyer, Nova & from 3rd parties like oh-dear
Pro Great Community
Cons
Con Community is a bit small, so if you get stuck you have trouble finding answers via google
Searching for "fat-free minification" on google sometimes doesn't give you the "right" answer.
Con Backward incompatible within minor version
There are serious incompatibilities even between minor versions (eg. between 3.6.0 and 3.6.2). Developers exhibit complete lack of understanding what is versioning of product (and which changes should be integrated in which versions), which makes this framework unsuitable for serious work. Development is slow, stable versions are rare and not treated seriously.
Con Default ORM doesn't support joins
The default ORM for this framework is missing some features such as joins. But it's important to keep in mind that it's a small plugin, only 23KB in size which still can be replaced with a larger ORM if needed.
An alternative the drop in f3-cortex ORM which is popular, and supported by the community, which supports Joins and much more.
Con Need more example of working code and directory structures and usage with JS and CSS frameworks
Con Abandoned
The project has been abandoned since 2016. (not abandoned since 2019 with multiple new releases)
Con The default template engine is "home made"
Con Lack of video tutorials
While there is a great user guide, compared to other established PHP frameworks, there is a relative shortage of video and written step-by-step tutorials for newbies to learn this framework.
Con Uses too much magic methods
It complicates debugging and autocompletion.
Con Bloated
While the speed doesn't seem to be an issue with it (on local tests), in production it may be hindered. The framework creates a ton of files and folders, some of which your app might not even use. Not good if you don't like having a ton of folders and rigid non-standard PHP folder structure for development.
Con Hard to use model properties
You need to check all model properties in database to know it exists, or declare all them manually.
Con Steep learning curve
While a lot of times you can write things in plain PHP, it will hinder you down the line when you want to use core features and find that you have to rewrite code which then causes issues throughout the app. Documentation is good, but you need to know what you are looking for and practical examples are non-existent. Many features have been updated throughout the versions in such a short time that tutorials you find online are confusing to sort through outdated tutorials and guides that no longer work or have been depreciated.
Con Poor performance
Con Follows bad design practices
Uses bad practices, like Singletons, Magic models, Middleware.
