CakePHP Folder Structure

After you’ve downloaded the CakePHP application skeleton, there are a few toplevel folders you should see:

  • The bin folder holds the Cake console executables.

  • The config folder holds the Configuration filesCakePHP uses. Database connection details, bootstrapping, core configuration filesand more should be stored here.

  • The plugins folder is where the Plugins your application uses are stored.

  • The logs folder normally contains your log files, depending on your logconfiguration.

  • The src folder will be where your application’s source files will be placed.

  • The templates folder has presentational files placed here:elements, error pages, layouts, and view template files.

  • The resources folder has sub folder for various types of resource files.The locales* sub folder stores string files for internationalization.

  • The tests folder will be where you put the test cases for your application.

  • The tmp folder is where CakePHP stores temporary data. The actual data itstores depends on how you have CakePHP configured, but this folderis usually used to store translation messages, model descriptions and sometimessession information.

  • The vendor folder is where CakePHP and other application dependencies willbe installed by Composer. Editing these files is notadvised, as Composer will overwrite your changes next time you update.

  • The webroot directory is the public document root of your application. Itcontains all the files you want to be publicly reachable.

Make sure that the tmp and logs folders exist and are writable,otherwise the performance of your application will be severelyimpacted. In debug mode, CakePHP will warn you, if these directories are notwritable.

The src Folder

CakePHP’s src folder is where you will do most of your applicationdevelopment. Let’s look a little closer at the folders insidesrc.

  • Command
  • Contains your application’s console commands. SeeCommand Objects to learn more.
  • Console
  • Contains the installation script executed by Composer.
  • Controller
  • Contains your application’s Controllers and their components.
  • Locale
  • Stores language files for internationalization.
  • Middleware
  • Stores any Middleware for your application.
  • Model
  • Contains your application’s tables, entities and behaviors.
  • Shell
  • Contains shell tasks for your application.For more information see Shells.
  • View
  • Presentational classes are placed here: views, cells, helpers.

Note

The folders Shell and Locale are not present by default.You can add them when you need them.