What is the difference between constructors in PHP4 & PHP5?


Top Questions

Constructors - PHP4 Constructors are functions in a class that are automatically called when you create a new instance of a class with new. A function becomes a constructor, when it has the same name as the class. If a class has no constructor, the constructor of the base class is being called, if it exists.

<?php
class Auto_Cart extends Cart {
function
Auto_Cart() {
$this->add_item("10", 1);
}
}
?>
This defines a class Auto_Cart that is a Cart plus a constructor which initializes the cart with one item of article number "10" each time a new Auto_Cart is being made with "new". Constructors can take arguments and these arguments can be optional, which makes them much more useful. To be able to still use the class without parameters, all parameters to constructors should be made optional by providing default values.
<?php
class Constructor_Cart extends Cart {
function
Constructor_Cart($item = "10", $num = 1) {
$this->add_item ($item, $num);
}
}

// Shop the same old boring stuff.
$default_cart = new Constructor_Cart;

// Shop for real...
$different_cart = new Constructor_Cart("20", 17);
?>
You also can use the @ operator to mute errors occurring in the constructor, e.g. @new.

<?php
class A
{
function
A()
{
echo
"I am the constructor of A.<br />\n";
}

function
B()
{
echo
"I am a regular function named B in class A.<br />\n";
echo
"I am not a constructor in A.<br />\n";
}
}

class
B extends A
{
}

// This will call B() as a constructor
$b = new B;
?>
The function B() in class A will suddenly become a constructor in class B, although it was never intended to be. PHP 4 does not care if the function is being defined in class B, or if it has been inherited. PHP 4 doesn't call constructors of the base class automatically from a constructor of a derived class. It is your responsibility to propagate the call to constructors upstream where appropriate. Constructors - PHP5 void __construct ( [mixed args [, ...]] ) PHP 5 allows developers to declare constructor methods for classes.

Classes which have a constructor method call this method on each newly-created object, so it is suitable for any initialization that the object may need before it is used.Parent constructors are not called implicitly if the child class defines a constructor. In order to run a parent constructor, a call to parent::__construct() within the child constructor is required. using new unified constructors

<?php
class BaseClass {
function
__construct() {
print
"In BaseClass constructor\n";
}
}

class
SubClass extends BaseClass {
function
__construct() {
parent::__construct();
print
"In SubClass constructor\n";
}
}

$obj = new BaseClass();
$obj = new SubClass();
?>
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.

Effectively, it means that the only case that would have compatibility issues is if the class had a method named __construct() which was used for different semantics.

Post new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
2 + 6 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

Check It !

Tweet It

W3 Updates

Stay informed on our latest news!

Syndicate content