__autoload()等效于非类函数?

时间:2013-02-08 00:07:16

标签: php

我一直在遇到需要使用str_getcsv()quoted_printable_encode()等有用函数的问题,但发现它只是在PHP 5.3之间产生的。我希望这个代码我写的至少与5.2兼容,但我不想写一堆专门的代码。

我已经养成了从PHP.net注释中获取替换函数的习惯,将它们存储在有用的命名文件中,如func.quoted_printable_encode.php,并在我要调用的每个地方编写如下所示的块它们。

if( ! function_exists('quoted_printable_encode') ) {
    $funcfile = 'func.quoted_printable_encode.php';
    if( file_exists($funcfile) && is_readable($funcfile) ) {
        require('func.quoted_printable_encode.php');
    } else {
        Throw new Exception('Cannot invoke function: quoted_printable_encode');
    }
}

对于类来说,这似乎与__autoload()非常类似,对于对象方法,这似乎与__call()类似,但我找不到任何关于全局函数的内容。这样的事情是否存在,或者我是否必须将所有这些额外的功能转移到某个头文件中?

1 个答案:

答案 0 :(得分:1)

在PHP中无法自动加载功能。有an RFC但它尚未实现(可能不会实现)。

如果你真的想自动加载函数,那么创建一个辅助类可能是有意义的,你可以将函数实现为静态方法。在框架中quite common就是这样做的。