2010-08-19 4 views
3

J'ai découvert un comportement intéressant de php en appelant différentes classes dynamiquement. Pour une raison quelconque, le nom de classe est brouillé et ressemble à une tranche de chaîne hachée.Nom de la classe brouillée passé à spl_autoload_call via call_user_func

ici est par exemple de code php Je suis en train d'exécuter:

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

Voici backtrace de cet événement:

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 
        ) 

      ) 

    ) 
... 
); 

Quelqu'un peut-il expliquer ce que em je faire le mal et ce qui peut causer piquer app_event être traduit en j7ltlqmoy?

MISE À JOUR
Script fonctionne sur toutes les autres classes et jette ce texte étrange que lorsque la méthode demandée n'est pas mis en œuvre. J'ai réussi à faire fonctionner mon application, mais cela n'explique toujours pas pourquoi elle brouille les noms au lieu de lancer une erreur.

MISE À JOUR 2
Cet événement se produit également (testé sur PHP 5.3.10) lorsque vous essayez d'appeler la méthode statique et propriété statique n'est pas déclarée. Il peut être corrigé en déclarant la méthode statique.

MISE À JOUR 3
Comme mentionné dans un commentaire à mon bug report, ce problème est causé par Zend Guard Loader

+1

Pouvez-vous donner un court script avec lequel nous pouvons essayer de reproduire cela? – Artefacto

+1

Faites un grep pour la chaîne 'j7ltlqmoy' sur tous vos fichiers source. Il se peut qu'il y ait une dépendance à cette classe ou que quelque part il fasse un appel à 'class_exists()' ... – ircmaxell

+1

Reproduire un script ou cela ne s'est pas produit: p – Artefacto

Répondre

0

Comme mentionné dans un commentaire à mon bug report, ce problème est causé par Zend Guard Loader

Questions connexes