对于第一个问题,这个很zend optimizer有什么关系?莫非你不编译就不会提示你重复定义吗?这是需要你自己解决的问题。第二个问题有两种方法可以解决,1是在编译的时候设定低一点的优化级别,2是把echo(dirname(__FILE__))这样的语句改为:eval('$dir=dirname(__FILE__);');
echo $dir;

解决方案 »

  1.   

    对于第一个问题,这个很zend optimizer有什么关系?莫非你不编译就不会提示你重复定义吗?这是需要你自己解决的问题。==================
    1 .不会的。我是用 require_once() 不会提示重复定义,但Zend 编译后问题就来了。
    2. 这个方法不错 Thanks
    eval('$dir=dirname(__FILE__);');
    echo $dir;
      

  2.   

    哦,那对第一个问题我也没有什么办法了,不知道你有没有用低一点的优化级别试试?zend safeguard里面把optimizations设为none试试看。如果你不怕麻烦,也可以像下面这样:
    test.php
    ________________________________________________
    <?php
    if (!defined('_TEST_PHP'))
    {
        define('_TEST_PHP', 1);
        function a()
        { 
            echo "hello";
        }
    }
    ?>test1.php
    ___________________________________
    <?php 
    require 'test.php';
    require 'test.php';
    a();
    ?>
      

  3.   

    真巧,我也想到一起了。我这样想的。if (define('_TEST_PHP')) return;
    default('_TEST_PHP',1 );原理一样。只是我不想搞个那么长跨度的括号把整个文件括起来。这样方法我是在C++中用过的。也是防止头文件重复加载。我试试。多谢了。
      

  4.   

    只怕用return是解决不了问题的
      

  5.   

    if (define('_TEST_PHP')) return;
    default('_TEST_PHP',1 );.........................defined
    define.....
      

  6.   

    TO:海豚
      我写错了。我用 require_once  我试过了,可以的。