Types of MVC: Conventional v/s Configurable

By Avinash

May 20, 2013Tutorial2 Comments

Now a days all the applications are being created using the MVC architecture, as it a most powerful and successful way to develop the application.

In this article we will see comparison of different types of MVC architecture we have, which are as below:

  1. Convention Based MVC
  2. Configuration Based MVC

Types of MVC Architecture

Convention Based MVC

As the name suggest, in this type of MVC we need to follow some predefined conventions in order to have it in working mode. This conventions are different from frameworks to frameworks. There are numbers of frameworks out there which follows convention based approach. Some of those frameworks are as below:

  • CakePHP
  • Codeigniter
  • YUI
  • Kohana

In this article we will see convention approach of the Codeigniter, we will see what types of convention are be there for creating a new model in Codeigniter.

First convention is storing of file, we need to store files under specific directory in order to treat it as model file. In Codeigniter all model files are stored under application/models/ directory.

Second convention is giving a name to the files. In Codeigniter model file name must be all lowercase.

Third convention is class name convention. In Codeigniter class name is depends on model file name which we have created in above step. Class name must be same as file name except First character in Class name must be uppercase, also model class in Codeigniter must extends the base class which is CI_Model. Let’s take all above cases with example.

In this example we will create a new model (product) from scratch.

Very first you need to create your model file under application/models/, in this case it would be /application/models/product_model.php

Now we need to define a class in that file. Based on our file name class name would be Product_model which will extend the base class CI_Model. So basic code of this class would be same as below code block.

class Product_model extends CI_Model { function __construct() { parent::__construct(); } }
class Product_model extends CI_Model
{
   function __construct()
   {
       parent::__construct();
   }
}

Configuration Based MVC

Unlike Conventional based MVC, in Configuration based MVC we have full control over file name and class name we use. We can explicitly define which files to load for particular model and which class to find from that file.

Magento is the best example of Configuration based MVC architecture. In Magento each module have its own config.xml file. In this file all the configuration of that particular module, like which files to check, which class to load, etc.

Magento is the best example of Configuration based MVC architecture.

In Magento if we want to use custom Model in our module then we will need to add some code in config.xml file to instruct Magento about the class name to search for. Please check below example for the same:

Packagename_Modulename_Model
<models>
    <packagename>
         <class>Packagename_Modulename_Model</class>
   <packagename>
</models>

So these are my thoughts on Different types of MVC architecture we can have with PHP. Hey guys do you have any other approach to create an MVC architecture?

Share This Article

Tags:
  • Cathlyn

    Excellent thought on MVC, never read this before on internet..

  • Mehul

    Excellent thought on MVC