I am in a situations where i need to instantiate a class with arguments from within an instance of another class. Here is the prototype:
//test.php
class test
{
You can:
1) Modify test class to accept an array, which contains the data you wish to pass.
//test.php
class test
{
function __construct($a)
{
echo $a[0] . '
';
echo $a[1] . '
';
echo $a[2] . '
';
}
}
2) initiate using a user method instead of the constructor and call it using the call_user_func_array()
function.
//test.php
class test
{
function __construct()
{
}
public function init($a, $b, $c){
echo $a . '
';
echo $b . '
';
echo $c . '
';
}
}
In your main class:
class myclass
{
function cls($file_name, $args = array())
{
include $file_name . ".php";
if (isset($args))
{
// this is where the problem might be, i need to pass as many arguments as test class has.
$class_instance = new $file_name($args);
call_user_func_array(array($class_instance,'init'), $args);
}
else
{
$class_instance = new $file_name();
}
return $class_instance;
}
}
http://www.php.net/manual/en/function.call-user-func-array.php
Lastly, you can leave your constructor params blank and use func_get_args()
.
//test.php
class test
{
function __construct()
{
$a = func_get_args();
echo $a[0] . '
';
echo $a[1] . '
';
echo $a[2] . '
';
}
}
http://sg.php.net/manual/en/function.func-get-args.php