本帖最后由 mingfish2 于 2013-04-17 17:03:44 编辑

解决方案 »

  1.   

    第一,你的代码里拼接成文件名的时候,少了小数点,还有定义全局变量没有globalglobal $name;
    $name ='linjuming';
    class my_template{
        function require_part($part_name){
            if(file_exists($part_name.'.php')){
                require($part_name.'.php');
            }
        }
    }
     
    $tmp=new my_template();
    $tmp->require_part('opp');第二我没看到你的opp.php文件怎么输出,但是全局变量引用需要先global $name;才可以
      

  2.   

        function require_part($part_name){
            if(file_exists($part_name.'.php')){
                require($part_name.'.php');
            }
            unset($part_name);
            $GLOBALS = array_merge($GLOBALS, get_defined_vars()); 
        }
      

  3.   

    谢谢xuzuning斑竹,貌似没有用,还是会报错
    $name='linjuming';
    class my_template{
    function require_part($part_name){
            if(file_exists($part_name.'.php')){
                require($part_name.'.php');
            }
            unset($part_name);
            $GLOBALS = array_merge($GLOBALS, get_defined_vars());
        }
    }$tmp=new my_template();
    $tmp->require_part('oop')
    Notice: Undefined variable: name in D:\phpnow\htdocs\laji\oop.php on line 2
      

  4.   

    噢,其实 $GLOBALS 中确实有了 name 项
    改成这样凑合一下吧class my_template{
        function require_part($part_name){
            if(file_exists($part_name.'.php')){
                require($part_name.'.php');
            }
            unset($part_name);
            return get_defined_vars();
        }
    }
     
    $tmp=new my_template();
    extract($tmp->require_part('oop'));//注意这里echo $name;
      

  5.   

    我前面的代码加上opp.php文件中以下代码:global $name;
    echo $name;可以输出,测试通过。
      

  6.   


    依然不行谢谢jzh2004,不过我不想用global方式,英文part文件很多,如果part文件里面又有很多全局变量,这样做影响效率