2010-04-06 8 views
2

J'ai mis en place un projet avec des fichiers de tests unitaires dans NetBeans. Je mis bootstrap à C:\www\foo\_tests\TestAutoload.php et mettre la méthode de chargement automatique simple à ce fichier:PHPUnit ne reconnaît pas file_exists()

function __autoload($class_name) { 
    // series of ifs 
    if (...) { 
     $file_name = ... 
    } 

    if (file_exists ($file_name)) { 
     require_once($file_name); 
    } else { 
     echo "autoload error"; 
    } 
} 

Tous mes tests échouent sur autoload cette façon. Ils produisent toujours juste "erreur de chargement automatique". Si je ne suis pas vérifier si file_exists et juste utiliser require_once($file) peu importe ce qui est en $file, cela fonctionne parfaitement.

Toute personne a rencontré quelque chose comme ça avant? Ce n'est pas quelque chose que je ne pourrais pas résoudre en ne vérifiant pas si le fichier existe ou non, mais je m'intéresse à la raison pour laquelle il le fait et si je peux le tromper d'une manière ou d'une autre.

+1

est le file_name $ un chemin complet ou relatif? – rogeriopvl

+0

Je pensais que c'était un chemin absolu, mais une perturbation en force le rendait plutôt à la place :) S'il vous plaît, voir mon commentaire à la réponse de pinkgothic. –

Répondre

2

Vous pouvez essayer d'utiliser file_exists() sur les noms de fichiers absolus s'ils ne le sont pas, par ex. file_exists($file_name) pourrait être file_exists(dirname(__FILE__) . '/../myclasses/' . $file_name), puisque (selon la réponse de amphetamachine), file_exists() ne pas utiliser le paramètre include_path de PHP.

+2

Vous m'avez indiqué la bonne direction. Le problème était que je $ _SERVER [ « DOCUMENT_ROOT »] dans autoload, qui était une chaîne vide comme PHPUnit est en cours d'exécution par CGI, ce qui entraîne donc en chemin relatif étant passé dans file_exists. Maintenant, je suis en train d'analyser ma propre "racine de document" et cela fonctionne parfaitement! –

4

De l'PHP Manual page for file_exists:

Soyez au courant: Si vous passez un chemin relatif à file_exists, il retournera faux à moins que le chemin se trouve être par rapport à la « dir PHP en cours » (voir chdir()) .

1

donnent le chemin absolu dans la fonction file_exits, il pourrait avoir le chemin du fichier ne corrige pas dans cette fonction file_exits ce que u ont Worte