A PHP MVC controller to display a form and add an item to the database I am creating a controller that will display a form and once the form has been submitted to store the item in the database. After the item has been stored the user will be redirected back to the main page of the site. I am calling this controller with:

require_once("../app/controller/AddController.php");
new AddController();


The AddController.php file looks like this:

&lt;?php

class AddController {

    public function __construct(){

        //Display our form
        if (empty($_POST['category']) || empty($_POST['description'])){

            require_once("../app/view/AddView.php");
            new AddView(array('title' =&gt; "Add an Item"));

        }

        //Add our new item to the database
        else {

            require_once("../app/model/AddModel.php");
            $add = new AddModel($_POST);

            if ($add-&gt;success())
                $_SESSION['message']['success'] = "The item has been added.";
            else
                $_SESSION['message']['error'] = "There was a problem adding your item.";

            header("Location: /");
            exit;

        }
    }
}


My main question is whether it is bad practice to place everything in the __construct() method like this since it is not really instantiating any variables or if I should get rid of __construct() and create a different method. The main reason I was doing this was to eliminate the third line when calling this class:

require_once("../app/controller/AddController.php");
$add = new AddController();
$add-&gt;someFunction();
If we talk about good practice then "Better not to do much in __constructor()". 
Constructors are built to instantiate a class. They must not be overloaded with huge code. For providing variant functionalities, use methods instead. This is how to work in modules. For a specific kind of task, it is better to call the specific function instead of overloading the same method.

However, you can do so (and you are doing), but it is not a good approach.
Consider an example,

You have to perform 10 actions for a given event. You can do so in same function. But it would one day become much complex to add new functionalities in future. However if you are dividing the whole task in modules, you can and will be able to add new functionalities with no overhead. Also this makes your code:


General
Flexible
Easily understandable
Easily modifiable
Clean
Best practice


Also not all frameworks follow complete MVC but you can see in any one of them, separate functions and classes are there for specific task/action. This may cause to write more lines of code but since this is a good practice, almost all the developers follow the same mechanism.

However, it is user specific opinion. At last, you can do anything you want to do cos you are developing &amp; may be this approach is somehow good in your context. Choice is yours.