Hierachical Model View Controller (HMVC)
HMVC stands for Hierarchical Model View Controller.
Modularization – This helps in reducing the dependencies between the disparate parts of the application.
Organization – It helps you organize your work folder-wise to make your workload lesser.
Reusability – This feature of HMVC gives you the benefit to reuse your code multiple times. Also as per the creativity of developers they can use different codes for the same kind of work design.
Extendibility – It makes your application more extensible without sacrificing the ease of maintenance.
File Name :
Modularization: We can separate each section of the app, dividing the app into different parts.
Extendibility: We can add parts to the application easily with little risk of breaking the application. For example, widgets.
Organization: Super tidy file separation and folder organization!
Reusability: If implemented well, the developer should be able to reuse every bit of code they write.
Modules
A module contains the model, view and controller folder for a certain section of the app.
How to run Modules
Download modular extensions download
Unzip the downloaded file
Go into the /third_party folder
Copy the folder /third_party/MX
Go to your Codeigniter directory and paste into /application/third_party
download core files and paste Application/core directory.
Download
MY_Loader.php
MY_Router.php
create modules directory in Application Directory.
Create the directory application/modules/itech/
create MVC Directory under itech folder
Create the directory application/modules/itech/controllers
Create the directory application/modules/itech/models
Create the directory application/modules/itech/views
Student.php
<?php
defined('BASEPATH') OR exit('no direct script access allowed');
class Student extends CI_controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('stud');
}
}
?>
View
File Name : stud.php
<html>
<head>
</head>
<body>
<h1>Hello Sara </h1>
</body>
</html>
Model
File Name : Stud_model.php
<?php
defined('BASEPATH') OR exit('no direct script access allowed');
class Stud_model extends CI_model
{
public function __construct()
{
parent::__construct();
}
}
?>
File Name :
$route['student'] = 'itech/student';
Run your project
File Name :
http://localhost/hmvc/student
Example:- MY_Controller
File Name : application/core/MY_Controller.php
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/* load the MX_Router class */
require APPPATH . "third_party/MX/Controller.php";
class MY_Controller extends MX_Controller {
function __construct() {
parent::__construct();
}
}
/* End of file MY_Controller.php */
/* Location: ./application/core/MY_Controller.php */
Controller of modules
File Name :
<?php
defined('BASEPATH') OR exit('no direct script access allowed');
// class Student extends CI_Controller
class Student extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('stud');
}
}
?>
Error : Unable to locate the specified class: Session.php
File Name :
If you use Codeigniter Modular Extensions HMVC this error can occur if you forget to change your class to extend MX_Controller instead of CI_Controller
So in your case you would start your class with:
class HOME extends MX_Controller {}
Instead of:
class Home extends CI_Controller {}
Error : Unable to locate the specified class: Session.php
File Name :
when you extends MX_Controller in MY_Controller then you will used MY_Controller everywhere
class Welcome extends MY_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
Previous
Next