Contributed by
Fabien Potencier
in #22315.
In Symfony 3.3, we're introducing a lot of changes and simplifications to prepare us for the fascinating Symfony 4.0 release that will take place on November 2017.
Some of those changes are technically minor but will have a profound effect in
your applications. In Symfony applications, the well-known Kernel::getRootDir()
method and its counterpart kernel.root_dir
parameter are misleading.
They return the path where the application kernel (usually AppKernel.php
) is
stored. In Symfony 2 and 3 this is usually the app/
directory, so it's common
to use expressions like %kernel.root_dir/../var/
or %kernel.root_dir/../web/
.
In Symfony 4, the kernel class has been moved to the src/
directory, so the
previous expressions won't break.
However, given that most of the times getRootDir()
is used to get the
project root directory, in Symfony 3.3 we've decided to introduce a new method
called Kernel::getProjectDir()
which will give you exactly that.
This new method finds the project root directory by looking for the first
directory that contains a composer.json
file starting from the directory
where the kernel is stored and going up until composer.json
is found.
In practice, this means that your application can simplify most or all the
expressions that use %kernel.root_dir%
. For example:
use %kernel.project_dir/web/
instead of %kernel.root_dir/../web/
.
What a Symfony developer should know about the framework: News, Jobs, Tweets, Events, Videos,...