eval($code)并没有把return new Bar($params[0]);替换成new Bar($params[0])
而是执行return new Bar($params[0]);

解决方案 »

  1.   

    实际上eval()只是将字符串执行一次而已,没有什么其他的,楼主这个例子意义深远啊,说明设计模式已经在php中有所体现了,希望能出一本用PHP讲设计模式的书籍...;-)
      

  2.   

    eval
    将值代入字符串之中。
    语法: void eval(string code_str);
    返回值: 无
    函数种类: 资料处理 
    内容说明 
    本函数可将字符串之中的变量值代入,通常用在处理数据库的资料上。参数 code_str 为欲处理的字符串。值的注意的是待处理的字符串要符合 PHP 的字符串格式,同时在结尾处要有分号。使用本函数处理后的字符串会沿续到 PHP 程序结束。