如何在php中调用函数时包含文件

时间:2016-07-29 19:27:34

标签: php

我知道这是一个完全垃圾的问题,但我完全感到困惑,我不知道如何在php中调用函数时包含文件。

例如我有一个名称为功能,其中包含100个文件,其功能名称为 myfunction.php ,此文件 MyFunction的();

所以当我把这个功能称为

include 'Function/'.$functionName.'.php'; // here file should auto include.
myfunction(); // i called this function here so when i called this function then myfunction.php file should auto include in above line 

有没有办法自动包含文件。 请建议我一个方法。

2 个答案:

答案 0 :(得分:2)

调用未定义的函数会抛出一个未定义的错误,该错误会在发生时暂停执行。即使您可以捕获错误,也无法将函数输出返回到原始变量。

我的建议,包括页面开头的所有功能:

foreach (glob("Function/*.php") as $filename)
{
    include $filename;
}

否则,您必须为每次通话手动执行以下操作:

try {
    $ret = example_function();
} catch ( Exception $e) {
    include('Function/example_function.php');
    $ret = example_function();
}

但是,您可以创建一个自定义函数来执行此操作:

function myFunction()
{
    $args = func_get_args();

    $func_name = array_shift($args);

    if ( !function_exists($func_name) ) {
        include('Function/' . $func_name . '.php');
    }

    return call_user_func_array($func_name, $args);
}

然后,您必须使用myFunction('testFunction', $param1, $param2)调用您的函数。

如果您正在加载课程,这会变得更容易。您可以使用PHP autoloading来完成此任务:

  

许多编写面向对象应用程序的开发人员为每个类定义创建一个PHP源文件。其中一个最大的烦恼就是必须在每个脚本的开头写一个需要包含的长列表(每个类别一个)。

     

在PHP 5中,不再需要这样做。 spl_autoload_register()函数注册任意数量的自动加载器,如果当前未定义类和接口,则可以自动加载它们。通过注册自动加载器,PHP可以在失败时加载类或接口,并提供一个Last Chance加载错误。

答案 1 :(得分:0)

您可以尝试使用方法重载__call

class MethodTest
{
    public function __call($functionName, $arguments)
    {
        include 'Function/'.$functionName.'.php';
        return $functionName($arguments); 
    }

}


$obj = new MethodTest;
$obj->myCustomFunc("myCustomParams")