# Learn About Flight
Flight is a fast, simple, extensible framework for PHP. It is quite versatile and can be used for building any kind of web application.
It is built with simplicity in mind and is written in a way that is easy to understand and use.
> **Note:** You will see examples that use `Flight::` as a static variable and some that use the `$app->` Engine object. Both work interchangeably with the other. `$app` and `$this->app` in a controller/middleware is the recommended approach from the Flight team.
## Core Components
### [Routing](/learn/routing)
Learn how to manage routes for your web application. This also includes grouping routes, route parameters and middleware.
### [Middleware](/learn/middleware)
Learn how to use middleware to filter requests and responses in your application.
### [Autoloading](/learn/autoloading)
Learn how to autoload your own classes in your application.
### [Requests](/learn/requests)
Learn how to handle requests and responses in your application.
### [Responses](/learn/responses)
Learn how to send responses to your users.
### [HTML Templates](/learn/templates)
Learn how to use the built-in view engine to render your HTML templates.
### [Security](/learn/security)
Learn how to secure your application from common security threats.
### [Configuration](/learn/configuration)
Learn how to configure the framework for your application.
### [Event Manager](/learn/events)
Learn how to use the event system to add custom events to your application.
### [Extending Flight](/learn/extending)
Learn how to extend the framework to with adding your own methods and classes.
### [Method Hooks and Filtering](/learn/filtering)
Learn how to add event hooks to your methods and internal framework methods.
### [Dependency Injection Container (DIC)](/learn/dependency-injection-container)
Learn how to use dependency injection containers (DIC) to manage your application's dependencies.
## Utility Classes
### [Collections](/learn/collections)
Collections are used to hold data and be accessible as an array or as an object for ease of use.
### [JSON Wrapper](/learn/json)
This has a few simple functions to make encoding and decoding your JSON consistent.
### [SimplePdo](/learn/simple-pdo)
PDO at times can add more headache than necessary. SimplePdo is a modern PDO helper class with convenient methods like `insert()`, `update()`, `delete()`, and `transaction()` to make database operations much easier.
### [PdoWrapper](/learn/pdo-wrapper) (Deprecated)
The original PDO wrapper is deprecated as of v3.18.0. Please use [SimplePdo](/learn/simple-pdo) instead.
### [Uploaded File Handler](/learn/uploaded-file)
A simple class to help manage uploaded files and move them to a permanent location.
## Important Concepts
### [Why a Framework?](/learn/why-frameworks)
Here's a short article on why you should use a framework. It's a good idea to understand the benefits of using a framework before you start using one.
Additionally an excellent tutorial has been created by [@lubiana](https://git.php.fail/lubiana). While it doesn't go into great detail about Flight specifically,
this guide will help you understand some of the major concepts surrounding a framework and why they are beneficial to use.
You can find the tutorial [here](https://git.php.fail/lubiana/no-framework-tutorial/src/branch/master/README.md).
### [Flight Compared to Other Frameworks](/learn/flight-vs-another-framework)
If you are migrating from another framework such as Laravel, Slim, Fat-Free, or Symfony to Flight, this page will help you understand the differences between the two.
## Other Topics
### [Unit Testing](/learn/unit-testing)
Follow this guide to learn how to unit test your Flight code to be rock solid.
### [AI & Developer Experience](/learn/ai)
Learn how Flight works with AI tools and modern developer workflows to help you code faster and smarter.
### [Migrating v2 -> v3](/learn/migrating-to-v3)
Backwards compatibility has for the most part been maintained, but there are some changes that you should be aware of when migrating from v2 to v3.