Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Codeigniter constructors. What is the difference?

I see two types of contructors in CI. For instance...

class Blog extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }
}

and

class Blog extends CI_Controller
{
       function Blog()
       {
                parent::Controller();
       }
}

What is the difference between them? I'm not sure which to choose.

like image 748
CyberJunkie Avatar asked Mar 18 '11 19:03

CyberJunkie


3 Answers

If you are using Codeigniter 2+ (which you should be)... The second option will not work, as it uses the PHP4 style constructor calls.

Actually, the second option wouldn't work anyway because the php4 constructor call needs to match the class you're extending...

So yeah, use the first one. It uses PHP5 style constructor calls.

For more information on PHP5 constructors

like image 67
jondavidjohn Avatar answered Oct 18 '22 21:10

jondavidjohn


Using a function with the name __construct() is the way constructors are written in PHP 5.

Using a function that has the same name as the class is the way constructors were written in PHP 4 (and, for compatibility reasons, those still work in PHP 5 -- even if you should prefer __construct())


As a reference, take a look at Constructors and Destructors -- quoting a portion of it :

For backwards compatibility, if PHP 5 cannot find a __construct() function for a given class, it will search for the old-style constructor function, by the name of the class.

like image 5
Pascal MARTIN Avatar answered Oct 18 '22 19:10

Pascal MARTIN


It looks like the first one is a php 5 implementation and second one is a php 4 implementation.

like image 1
Dan Spiteri Avatar answered Oct 18 '22 19:10

Dan Spiteri