You are reading the documentation for the 2.x version. Switch to the current version 3.x.

Hierarchy of directories

We recommend using the default hierarchy of directories for your projects.

Default hierarchy

Default hierarchy of directories:

Path Description
/config Configurations of project
/public Public directory where your web server link visitors
/src Your project sources
/resources Resources of project
/resources/assets Assets of project
/resources/templates Your templates files
/var Var files
/var/cache Cache directory
/var/debug Debug reports directory
/var/tmp Temporary directory for your project
/vendor Vendors (for composer)

It’s a basic hierarchy that lot of frameworks used. You won’t be lost if you come for any of them :).

Custom hierarchy

You are able to change default hierarchy by your own. To do that, you have two choices:

  • Implements Berlioz\Core\Directories\DirectoriesInterface interface
  • Extends Berlioz\Core\Directories\DefaultDirectories class

Representation of the interface:

/**
 * Interface DirectoriesInterface.
 *
 * @package Berlioz\Core\Directories
 */
interface DirectoriesInterface
{
    /**
     * Get working directory.
     *
     * @return string
     */
    public function getWorkingDir(): string;

    /**
     * Get app directory.
     *
     * Find last composer.json file.
     *
     * @return string
     */
    public function getAppDir(): string;

    /**
     * Get config directory.
     *
     * @return string
     */
    public function getConfigDir(): string;

    /**
     * Get var directory.
     *
     * @return string
     */
    public function getVarDir(): string;

    /**
     * Get cache directory.
     *
     * @return string
     */
    public function getCacheDir(): string;

    /**
     * Get log directory.
     *
     * @return string
     */
    public function getLogDir(): string;

    /**
     * Get debug directory.
     *
     * @return string
     */
    public function getDebugDir(): string;

    /**
     * Get vendor directory.
     *
     * @return string
     */
    public function getVendorDir(): string;
}

Pass your object in first argument of Berlioz\Core\Core object.

Last updated: Thu, 18 Sep 2025 16:20