';自动加载';php中的函数?

';自动加载';php中的函数?,php,Php,我有一个问题,我有很多巨大的函数,而在给定的脚本中我只使用很少的函数。 每个函数都位于自己的文件中。当给定的函数不存在时,能够“自动加载”或者只需要_一次文件就好了 也许有一种方法可以覆盖致命错误:在脚本开始时调用未定义的函数…,因此每次该错误触发时,脚本都会首先尝试使用一个不存在的函数名请求一次文件名,然后再次尝试调用该函数。 代码可能是这样的 if ( !function_exists('SOME_FUNCTION')) { include(.....) } 代码可能是这样

我有一个问题,我有很多巨大的函数,而在给定的脚本中我只使用很少的函数。 每个函数都位于自己的文件中。当给定的函数不存在时,能够“自动加载”或者只需要_一次文件就好了

也许有一种方法可以覆盖
致命错误:在脚本开始时调用未定义的函数…
,因此每次该错误触发时,脚本都会首先尝试使用一个不存在的函数名请求一次文件名,然后再次尝试调用该函数。

代码可能是这样的

if ( !function_exists('SOME_FUNCTION')) {
     include(.....)
 } 

代码可能是这样的

if ( !function_exists('SOME_FUNCTION')) {
     include(.....)
 } 

将做得更好

将做得更好

我想您可以尝试编写一些错误处理,其中包括函数存在,但问题是确定何时正确加载函数


您是否考虑过将函数集成到类中以便充分利用?

我想您可以尝试编写一些错误处理,其中包括存在的函数,但问题是确定何时正确加载函数


您是否考虑过将函数集成到类中以便可以利用?

如果您在编写脚本时没有OOP,则可以使用函数exist函数:

if(!function_exists('YOUR_FUNCTION_NAME')){
    //include the file
    require_once('function.header.file.php');
}
//现在给我打电话

//参考:

如果您使用的是类,例如OOP。然后您可以使用自动加载方法:

function __autoload($YOUR_CUSTOM_CLASS){
    include $YOUR_CUSTOM_CLASS.'class.php';
}
//现在,您可以使用当前文件中未包含的类

//参考:

如果在没有OOP的情况下编写脚本,可以使用函数exist函数:

if(!function_exists('YOUR_FUNCTION_NAME')){
    //include the file
    require_once('function.header.file.php');
}
//现在给我打电话

//参考:

如果您使用的是类,例如OOP。然后您可以使用自动加载方法:

function __autoload($YOUR_CUSTOM_CLASS){
    include $YOUR_CUSTOM_CLASS.'class.php';
}
//现在,您可以使用当前文件中未包含的类

//参考:
未定义的函数错误是PHP的致命错误。所以没有办法处理致命错误(除了像这样的黑客)。最好以面向对象的方式思考,并使用带有的类。

未定义的函数错误是PHP的致命错误。所以没有办法处理致命错误(除了像这样的黑客)。最好以面向对象的方式思考,并将类与一起使用。

不会帮助您快速捕获不存在的函数。相反,您必须用if(!function_exists())包围所有函数调用。据我所知,您只能使用类和实现动态捕获不存在的调用。也许将代码放在类中或将相关函数集放在一个文件中,从而保存对函数的大量检查是有意义的。

不会帮助您动态捕获不存在的函数。相反,您必须用if(!function_exists())包围所有函数调用。据我所知,您只能使用类和实现动态捕获不存在的调用。也许将代码放入类或将相关函数集放入一个文件中,从而保存对函数的大量检查是有意义的?

因为php可以执行以下操作:

class Funcs
{
    public function __callStatic($name, $args) {
        if (!function_exists($name)) {
            require_once sprintf(
                'funcs/%s.func.php', // generate the correct path here
                $name
            );
        }

        if (function_exists($name)) {
            return call_user_func_array($name, $args);
        }
        else {
            // throw some error
        }
    }
}
然后像这样使用它(例如):

它将尝试在
funcs/helloworld.func.php
中加载文件,并在成功加载后执行
helloworld

通过这种方式,您可以重复执行内联测试。

因为php,您可以执行以下操作:

class Funcs
{
    public function __callStatic($name, $args) {
        if (!function_exists($name)) {
            require_once sprintf(
                'funcs/%s.func.php', // generate the correct path here
                $name
            );
        }

        if (function_exists($name)) {
            return call_user_func_array($name, $args);
        }
        else {
            // throw some error
        }
    }
}
然后像这样使用它(例如):

它将尝试在
funcs/helloworld.func.php
中加载文件,并在成功加载后执行
helloworld


通过这种方式,您可以避免重复的内联测试。

这是一个很好的答案,就像我为PHP提供的答案一样。这是一个很好的答案,就像我为PHP提供的答案一样:Related:Related: