这样能成功
<?php
$test = 'yes';
fna($test);
function fna($a)
{
    echo $a;
}
?>但是这样就不能调用了
a.php
----
<?php
$test = 'yes';
fna($test);
require('b.php');
?>b.php
----
<?php
function fna($a)
{
    echo $a;
}
?>1,我知道把require放在前面就可以了直接调用了
2,google了一会还有一个解决办法使用 autoload机制没有 "声明" 的办法解决吗

解决方案 »

  1.   

    autoload只适用于自动加载类文件,对函数不行
    “没有 "声明" 的办法解决吗” 这话什么意思? 你都知道require放在前面就好了,为什么还要走弯路呢?
      

  2.   

    autoload那个方法函数 其实也可以 不过感觉这样也太浪费资源了
    function __autoload($fuc_name = false) {
        $load_list = get_load_list();
        if (!function_exists($fuc_name)) {
            foreach ($load_list as $class_file_name)
                require_onece($class_file_name);
        }
    }
      

  3.   

    具体就是怎么不改变代码结构就能使这段代码运行a.php
    ----
    <?php
    $test = 'yes';
    fna($test);
    require('b.php');
    ?>b.php
    ----
    <?php
    function fna($a)
    {
      echo $a;
    }
    ?>
      

  4.   

    用function_exists判断是否存在,不存在包含指定文件
      

  5.   

    “要先定义,后使用”这是批评 PHP 的主要论据之一
    不是都说 php 草根吗?不规范吗?居然可以使用未经声明的变量,真是大逆不道!于是 php 的开发者们就听取了你们的意见,放弃了 require 在编译期间的优先级
    于是 require 和 include 就没有了质的区别既然你们都坚持要“要先定义,后使用”,他又何必要维持灵活性呢?毕竟php是给你们当工具用的