在面向对象开发中:自动载入对象的方法__autoload()的过程中,出现如下问题:
   文件new.php代码如下 
    <?php
    function __autoload($name){
    include("$name_25.php");
    }
    $p=new demo();
    echo $p->fun1();
    ?>
    而有demo_25.php文件待引入new.php文件中。 
    include函数中用include("$name_25.php")由于有$符号 ,系统会把$name_25当作文件名而出现不存在该文件的错误。
    分析就是include中单双引号的问题,试了几个像include("'$name+_25'.php"),include("'$name'.'_25'.php")等都不行,
    
     demo_25.php文件代码:<?php
    class demo{
    function fun1(){
        echo "引用的demo类";
    }
    }
    ?>
    有没大牛指点一下???????

解决方案 »

  1.   

    如果$name是变量:
    单引号的情况include($name.'25.php');或include(''.$name.'25.php');
    双引号的情况include($name."25.php");或include("".$name."25.php");
    如果$name不是变量,是字串:
    单引号的情况include('$name_25.php');
    单引号的情况include("$name_25.php");
      

  2.   

    双引号的情况include("\$name_25.php");
      

  3.   


    哦 果然大牛,问题搞定!再问个:
    include("".$name."25.php")和include($name."25.php")有有啥不同呢?就是前面加个空格?
      

  4.   

    include("$name_25.php");你的问题关键在于$name_25会被作为变量
    正确的写法是
    include("{$name}_25.php");
      

  5.   


    //建议简化代码.
    $fileName = $name."_25.php";
    include($fileName);