通过call_user_func将乱序的类名传递给spl_autoload_call

时间:2010-08-19 00:21:55

标签: php spl-autoload-call

我在动态调用不同的类时发现了php的有趣行为。 由于某种原因,类名称被加扰,它看起来像片段哈希。

这里是我试图执行的PHP代码示例:

call_user_func(array('app_event', 'arrayItems'));

以下是此次活动的回溯:

Array
(
[0] => Array
    (
        [function] => autoLoader
        [class] => init
        [type] => ::
        [args] => Array
            (
                [0] => j7ltlqmoy
            )

    )

[1] => Array
    (
        [function] => spl_autoload_call
        [args] => Array
            (
                [0] => j7ltlqmoy
            )

    )

[2] => Array
    (
        [file] => /site/class.app.php
        [line] => 107
        [function] => call_user_func
        [args] => Array
            (
                [0] => Array
                    (
                        [0] => app_event
                        [1] => arrayItems
                    )

            )

    )
 ...
 );

有人可以解释我做错了什么,以及什么可以导致刺痛 app_event 被翻译成 j7ltlqmoy

更新
脚本确实适用于所有其他类,并且只有在未实现请求的方法时才会抛出此奇怪的文本。我已经设法使我的应用程序工作,但它仍然无法解释为什么它会扰乱名称而不是抛出错误?

更新2
当您尝试静态调用方法并且未声明静态属性时,也会发生此事件(在PHP 5.3.10上测试)。它可以通过声明方法static来修复。

更新3
正如我对bug report的评论所述,此问题是由 Zend Guard Loader

引起的

1 个答案:

答案 0 :(得分:0)

正如我对bug report的评论所述,此问题是由 Zend Guard Loader

引起的