Internals / Bootstrapping
As mentioned before, Bolt is a Silex application. As such, it is a good idea to familiarize yourself with Silex, because when hacking the code or creating your own extensions, you can basically do whatever can be done in Silex in general.
In the Bolt code, there is an ubiquitous
$app, which is an instance of
Bolt\Application, which extends
\Silex\Application. Basically, this is
'the application', and most of the components that are used in Bolt are created
as services via Dependency Injection.
If you want to know more about these subjects, we heartily recommend these articles about Dependency Injection:
In Bolt, this
$app will be available in the majority of the code, and so are
all of the services, libraries and variables that are part of the application.
All of these are created in
src/Application.php. Read the code in that file,
to get a feeling for what can be accessed through the
$app object. Most of the
services defined there are Symfony components, about which you can read on the
Silex Documentation page on Service Providers, or on the
Symfony Components page.
The next largest group are the Bolt components. These can be recognized by the
Bolt\ namespace. These components are autoloaded, and can be found in