Table of Contents
CodeIgniter 4 have many features. In the list of features a special section added called spark. Spark is a command line tool of codeigniter 4. This is newly added feature.
CodeIgniter 4 is totally updated from it’s previous versions. Update in the sense every where like from directory structure to creating classes for model, controllers, routes etc.
CodeIgniter 4 Spark is a command line interface which works to manage application. We will see the complete details in few seconds. This tutorial is going to be more and more interesting to get the new thing in codeigniter. Inside this article we have covered the available commands upto CodeIgniter v4.0.3. Rest you will find more in upcoming versions.
Note*: For this article, CodeIgniter v4.0.3 or v4.0.4 setup has been considered. May be when you are seeing, version will be updated. CodeIgniter 4.x still is in development mode.
We will see inside this article about Complete CodeIgniter 4 Spark tutorial. Let’s get started.
Download & Install CodeIgniter 4 Setup
We need to download & install CodeIgniter 4 application setup to system. To set application we have multiple options to proceed. Here are the following ways to download and install CodeIgniter 4 –
- Manual Download
- Composer Installation
- Clone Github repository of CodeIgniter 4
Complete introduction of CodeIgniter 4 basics – Click here to go. After going through this article you can easily download & install setup.
Here is the command to install via composer –
$ composer create-project codeigniter4/appstarter codeigniter-4
Assuming you have successfully installed application into your local system.
What is Spark in CodeIgniter 4 ?
Spark is a CodeIgniter CLI Tool. This tool have some commands which we can use and manage CodeIgniter 4 application. This features is available from latest development version 4.x.
By using Spark CLI, we can start development server of application. First we need to understand about available commands.
Let’s start CodeIgniter 4 Spark Module Tutorial in depth.
How we can see the available commands of spark ? Simply back to terminal or command prompt, go to project setup and type command –
$ php spark

Now, we can see the list of commands – list, namespaces, routes, serve etc. These are commands which we can use and perform their respective functions. Each command having their own scope of work.
By the help of spark module we can also work with database. In the above image, you can see a section is there called Database. In that section commands available as – db:seed, migrate, migrate:create etc. We will see about these commands in details in minutes.
How we start development server by CodeIgniter 4 Spark ?
To understand this development server concept, suppose we have an application in CodeIgniter 4. We want to execute this application. So, we can run that application by means of two different ways.
- By URL
- Using spark command [new module]
By URL is the simplest way to run project into browser. In simple terms copy the path of project, go to your browser and type into address bar and open. It’s pretty simple.
Let’s see how can we use spark command to run, It will be more interesting to know –
Back to terminal and/or command prompt >> Open project folder >> Type Command $ php spark serve
It outputs at terminal –

We can see clearly in the above image about starting of development server. CodeIgniter development server started on http://localhost:8080
By default spark started at localhost with port 8080. In case suppose this port is busy some where to serve some other applications, then this port management will be automatically handled by spark. Spark will choose some other port to start development server.
But in some cases we want to choose our own port to run application. Let’s see how can we do –
Run application at different port
$ php spark serve -port 8089
CodeIgniter development server started on http://localhost:8089
This will start development server of application at port 8089.
To cancel the running development server, press Ctrl + C. It will the stop the server.
When we should use this Development server ?
As we have discussed previously, about starting a development server. This command $ php spark serve is useful where we are doing local development of any project. In the process of application deploy at production server, URL based concept should be used to run the application. We will not serve application by spark.
When you create application in CodeIgniter 4, it includes /public into URL and added index.php with every route. In the production mode of application these things should be removed to make neat & clean URL for SEO point of view.
CodeIgniter Panel of Spark Command List
As we have run the command $ php spark, we have the list of commands divided into two sections CodeIgniter & Database.
To learn for CodeIgniter 4 Generators with v4.1.1, Click here.
The first section is CodeIgniter, which looks something like this –
CodeIgniter help Displays basic usage information. list Lists the available commands. namespaces Verifies your namespaces are setup correctly. routes Displays all of user-defined routes. Does NOT display auto-detected routes. serve Launches the CodeIgniter PHP-Development Server. session:migration Generates the migration file for database sessions.
How to run Commands in Spark
If suppose, we don’t have any idea to run any command, simply type command as –
$ php spark <command-name>
For Example:
help command
$ php spark help
This command will open it’s interface i.e how can we use this. help command – It opens the help manual of any command.
Syntax – $ php spark help <command_name>
If we want help regarding let’s say command serve. Then we should use like
$ php spark help serve
CodeIgniter CLI Tool - Version 4.0.3 - Server-Time: 2020-08-31 05:12:54am Description: Launches the CodeIgniter PHP-Development Server. Usage: serve Options: -php The PHP Binary [default: "PHP_BINARY"] -host The HTTP Host [default: "localhost"] -port The HTTP Host Port [default: "8080"]
We can say it provides a short description about available command and their usage. Inside this documentation we have an idea about the parameters or options that we need to run a specific command.
routes command
Fetch all the application routes – We can do by using this routes command. Help manual Command – $ php spark help routes
Short Description: Displays all of user-defined routes. Does NOT display auto-detected routes.
Command – $ php spark routes
Output –

It list all the application routes what we have developed inside /app/Config/Routes.php
If we open the Routes.php file –
$routes->get('/', 'Home::index'); $routes->get('about-us', 'Site::aboutUs'); $routes->get('contact-us', 'Site::Contact'); $routes->match(["get", "post"], 'my-form', 'Site::myForm');
list command
List command exactly works like $ php spark. This simply returns the list of all available commands.
$ php spark list
Database Section Commands – Spark Module
Database section commands are responsible to handle database related operations. These operations as per command list includes – Migration related command & Seeders commands.
Migration commands – These command help developers to control over the database tables – create table scheme or table structure with the help of PHP file. This technique is much flexible to create or remove tables . We can also create tables by using PhpMyAdmin manual tool.
To learn in Migration of CodeIgniter 4 with v4.1.1 click here.
Seeders commands – Commands which seeds dummy data or test data into table know as seeds command. By the help of seeders we can import 1000+ test rows which helps in application testing.
Learn for Seeders in CodeIgniter 4 with v4.1.1, Click here.
Have a look, the command pallet of database –
Database db:seed Runs the specified seeder to populate known data into the database. migrate Locates and runs all new migrations against the database. migrate:create Creates a new migration file. migrate:refresh Does a rollback followed by a latest to refresh the current state of the database. migrate:rollback Runs the "down" method for all migrations in the last batch. migrate:status Displays a list of all migrations and whether they've been run or not.
Available Commands –
There are several commands inside this pallet. We need to start each command one by one for better understanding. These all commands are related with database. Like for managing table, managing data etc.
Let’s start about explanation of each –
migrate:create
This command creates migration file into application. Migration means creating a file which stores the information of table like for it’s scheme or it’s drop command.
Migration files will be stored inside /app/Database/Migrations path. Every migration file stores two methods – up() & down(). Let’s create first migration file.
Command – $ php spark migrate:create <migration_name>
Example – $ php spark migrate:create users
Output –
Name the migration file: users
Created file: App/Database/Migrations/2020-08-31-103049_users.php
<?php namespace App\Database\Migrations; use CodeIgniter\Database\Migration; class Users extends Migration { public function up() { // } //-------------------------------------------------------------------- public function down() { // } }
Users migration file contains two methods as we can see – up() & down(). Up method is used to create table structure at db and down method used to rollback means drop the table from database.
Complete code with up() ad down() method –
<?php namespace App\Database\Migrations; use CodeIgniter\Database\Migration; class Users extends Migration { public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'password' => [ 'type' => 'VARCHAR', 'constraint' => '220', ], 'created_at datetime default current_timestamp', ]); $this->forge->addKey('id', true); $this->forge->createTable('users'); } //-------------------------------------------------------------------- public function down() { $this->forge->dropTable('users'); } }
We are using $this->forge object for defining table and dropping table.
migrate:status
This command list the status of migration file means they are migrated inside database or they are simply created. If we migrate any migration file into database then it’s status will be ON else it will be OFF or blank.
When we migrate migrations into table we will see a extra table will be created named as migrations. Hold we will see this topic in seconds.
migrate
We have created migrations, right. Now, it’s time to migrate into database. Migrate command will help to migrate migrations into database. It creates table. When we run this command up() method will be called.
Command – $ php spark migrate

Inside above image we can understand each thing please look very carefully. We have used commands of getting status and running migrations.
When we migrate migrations, it creates table along with a extra table called migrations. If migration already in working then table will be updated otherwise for the first migration, this table automatically created by Migration.
This table is used to keep track of the migrations and it’s status.
migrate:rollback
As discussed previously, rollback command is used to revert latest migration from database. So, this command will drop table. While running this command down() method of migration file will work.
Command – $ php spark migrate:rollback
How can we create a Seeder File –
Seeder file stored inside /app/Database/Seeds. Seeder files are those files which helps to seed dummy data to database table. Seeder files will created as –
<?php namespace App\Database\Seeds; class UserSeeder extends \CodeIgniter\Database\Seeder { public function run() { $data = [ 'name' => 'Sanjay Kumar', 'email' => 'sanjayk@gmail.com', 'password' => "12345678", ]; // Simple Queries $this->db->query("INSERT INTO users (name, email, password) VALUES(:username:, :email:, :password:)", $data ); // Using Query Builder $this->db->table('users')->insert($data); } }
Class will extends \CodeIgniter\Database\Seeder
db:seed
This command seeds dummy data by using seeder file. Let’s run the previously created seeder file.
Command – $ php spark db:seed
After running this command it will insert a new data row inside users table.
This tutorial is not yet complete because the development of CodeIgniter 4 is not yet finalised by community. This is only for the version 4.0.3 yet more to be come. In future we hope more to see in this command list to manage everything by Spark CLI.
Learn CodeIgniter 4 Scaffolding ferature of v4.1.1.
We hope this article helped you to learn about CodeIgniter 4 Spark CLI Command Tutorial in a very detailed way.
If you liked this article, then please subscribe to our YouTube Channel for PHP & it’s framework, WordPress, Node Js video tutorials. You can also find us on Twitter and Facebook.
Find More on CodeIgniter 4 here
- CodeIgniter 4 Cookie Helper Tutorial
- CodeIgniter 4 CRUD Application Tutorial
- CodeIgniter 4 CRUD REST APIs Tutorial
- CodeIgniter 4 CSRF Token in AJAX Request
- Database Query in CodeIgniter 4 Tutorial
- CodeIgniter 4 Ajax Form Data Submit
- CodeIgniter 4 Form Validation Tutorial
- CodeIgniter 4 Image Upload with Form Tutorial
- Multi language in CodeIgniter 4 Tutorial
- Stripe Payment Gateway Integration in CodeIgniter 4
- CodeIgniter 4 CSRF Token Tutorial
- CodeIgniter 4 Basics Tutorial
- CodeIgniter 4 Spark CLI Commands Tutorial
- Migration in CodeIgniter 4 Tutorial
- Seeders in CodeIgniter 4 Tutorial
Hi, I am Sanjay the founder of ONLINE WEB TUTOR. I welcome you all guys here to join us. Here you can find the web development blog articles. You can add more skills in web development courses here.
I am a Web Developer, Motivator, Author & Blogger. Total experience of 7+ years in web development. I also used to take online classes including tech seminars over web development courses. We also handle our premium clients and delivered up to 50+ projects.
I think the admin of this site is in fact working hard in support of his web site,
since here every material is quality based material.