multiple constructors php5
Posted: Sat Jan 14, 2006 3:09 pm
Is it possible to have multiple constructors in one class? Is this what overloading is? I want to be able to instantiate the object in different ways, based on how many arguments are passed.
EX:
I have been doing the following to emulate this in php4, which can still be used in php5, but I was wanting to know if there is any way to incorporate the _construct method, or if it is even worthwhile.
EX:
Code: Select all
<?php
class User
{
public $username;
public $firstname;
public $lastname;
public function _construct($id) // this one should get data
{
$query="SELECT * FROM users WHERE id='$id'";
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
$this->username=$row['username'];
$this->firstname=$row['firstname'];
$this->lastname=$row['lastname'];
}
public function _construct($username, $firstname, $lastname) // this one should add data
{
$query="INSERT INTO users VALUES(NULL, $username, $firstname, $lastname)";
$result=mysql_query($query);
$this->username=$username;
$this->firstname=$firstname;
$this->lastname=$lastname;
}
}
?>Code: Select all
function User()
{
$name = "User".func_num_args();
$arg_list = func_get_args();
$num_args = func_num_args();
switch($num_args)
{
case 1:
$this->$name($arg_list[0]);
break;
case 3:
$this->$name($arg_list[0],$arg_list[1],$arg_list[2]);
break;
default: echo "Wrong number of parameters on User constructor!";
}
}
function User1($id)
{
// code to get user data from db
}
function User3($username, $firstname, $lastname)
{
// code to insert data into db
}