一个关于eval的问题
Cain 2004-09-21 06:09:19 <?php
function classFactory($classname)
{
$code = "return new {$classname}(";
if (func_num_args() > 1) {
$params = array_slice(func_get_args(),1);
$c = count($params);
for($i=0;$i<$c;++$i) {
if ($i>0) {
$code .= ',';
}
$code .= '$params[' . $i . ']';
}
}
$code .= ');';
/**************************************************
* 问题:
* print $code. "<br>";
* output: return new Bar($params[0]);
* 请问下面的eval($code)是如何把return new Bar($params[0]);
* 替换成new Bar($params[0])或是其他的?
**************************************************/
return eval($code);
}
class Bar
{
function Bar($arg1)
{
echo "I am Bar, I expect 1 argument...<br>";
echo "arg1 = $arg1<br><br>";
}
}
$myBar = classFactory('Bar',4564);
?>