2009-07-31 7 views
0

J'ai une classe qui ressemble à ceci:PHP Les fonctions statiques ne fonctionnent pas lorsque le répertoire change?

utils/Result.php

<?php 

class Result 
{ 
    public static function ok() 
    { 
     echo "OK"; 
    } 
} 

Si je crée le script suivant

./sandbox.php

<?php 

require_once("utils/Result.php"); 

print_r(Result::ok()); 

Et exécutez-le avec php sandbox.php cela fonctionne très bien. Mais si je fais ce qui suit: cd test && php ../sandbox.php il me donne l'erreur suivante

PHP Fatal error: Call to undefined method Result::ok() in /mnt/hgfs/leapback/sandbox.php on line 5 

maintenant, se rendre compte que l'require semble fonctionner. Si j'ajoute une propriété à la classe Result et que j'utilise print_r sur une instance de celle-ci, elle semble correcte. Mais les méthodes statiques disparaissent. Je suis très confus. Je cours PHP 5.2.6.

+0

Si vous remplacez votre instruction require_once par 'require_once dirname (FILE). '/ utils/Result.php'' - Que se passe-t-il? – jason

+0

Euh, damnit, le formatage des commentaires ... qui est censé être souligné underscore soulignement FILE soulignement – jason

+0

Que se passe-t-il si vous supprimez le "public static"? – inakiabt

Répondre

2

Avez-vous un fichier 'utils/Result.php' dans le répertoire que vous avez changé (test)? Si oui, il sera inclus à la place du fichier original.

+0

Non. Je viens de créer un nouveau répertoire pour être certain. Cela arrive encore. –

+1

Dang ... Tout va bien. J'ai eu le chemin "include_path" parce que j'ai idiotement mis le chemin de php.ini pour inclure globalement le code d'un autre projet. Merci les gars –

Questions connexes