日期:2014-05-17  浏览次数:20498 次

php 如何使用流程下面require定义的函数
这样能成功
<?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机制

没有 "声明" 的办法解决吗


------解决方案--------------------
autoload只适用于自动加载类文件,对函数不行
“没有 "声明" 的办法解决吗” 这话什么意思? 你都知道require放在前面就好了,为什么还要走弯路呢?
------解决方案--------------------
用function_exists判断是否存在,不存在包含指定文件
------解决方案--------------------
“要先定义,后使用”这是批评 PHP 的主要论据之一
不是都说 php 草根吗?不规范吗?居然可以使用未经声明的变量,真是大逆不道!

于是 php 的开发者们就听取了你们的意见,放弃了 require 在编译期间的优先级
于是 require 和 include 就没有了质的区别

既然你们都坚持要“要先定义,后使用”,他又何必要维持灵活性呢?毕竟php是给你们当工具用的