It is very important to understand the file structure in CodeIgniter if you want to develop applications successfully.

The following image shows the file structure in CodeIgniter

Let's now look at the above files

  • application – this is the directory that will contain your application logic. All of your application code will be contained in this directory
  • system – this folder contains the framework core files. It is not advised to make changes in this directory or put your own application code into this directory.
  • user_guide – this directory contains the user manual for CodeIgniter.
  • vendor – this directory contains composer packages source code. The other files related to this directory are composer.json and composer.lock
  • index.php – this is the entry point into the application.

Let's now look at the directories in more details

Application subdirectories

As we stated above, this directory contains the application code. In this section, we will look at the internal subdirectories

  • cache – stores cached files
  • config – keeps configuration files
  • controller – all application controllers are defined in this controller
  • core – contains custom core classes that extend system files. For example, if you create a base controller that other controllers should extend, then you would place it in this directory
  • helpers – this directory is used for user-defined helper functions
  • hooks – used for custom hooks
  • language – used to store language files for applications that use more than one language
  • libraries – used to store custom created libraries
  • logs – application log files are kept in this directory
  • models -all application models should be defined in this directory
  • third_party – this is used for custom many packages that you or other developers have created.
  • Views – application views go into this directory

System subdirectories

Let's now look at system subdirectories. Remember this is where the framework source code resides. Therefore, don't make any changes to the files in this directory.

  • core – this is like the heart of the framework. All of the core file that makes up the framework are located in here. If you would like to extend the functionality of the core file then you need to create a custom core file in the application directory. After that, you can override or add a new behavior that you wish. You should never make changes directly in here.
  • database – database drivers, cache and other files need for database operations are provided in here.
  • fonts – as the name suggests, this directory contains fonts and information relating to fonts
  • helpers – this directory contains helper functions that come out of the box
  • language – contains language files that are used by the framework
  • libraries – contains the source files for the various libraries that come with CodeIgniter out of the box.

User_guide directory

This file serves as a reference guide for you when you want to understand the CodeIgniter API. You should not upload this directory when deploying your application.

Vendor directory

This directory contains source files for packages that you install via composer. The files in this directory should be left as they are. No changes should be made to them. Unlike the user_guide directory, this directory should be uploaded if you are using composer packages in your application.

Index.php file

This directory contains source files for packages that you install via composer

Summary

  • The file structure of CodeIgniter is very important to understand to work effectively with CodeIgniter
  • Core Database, fonts, helpers, language, libraries are important system subdirectories of Application Directory
  • User guide directory serves as a reference guide for you when you want to understand the CodeIgniter API. This is the entry point into the application and no changes should be made to this directory.
  • Vendor directory contains source files for packages that you install via composer. This directory contains source files for packages that you can install via composer

 

YOU MIGHT LIKE: