2010-07-21 4 views
2

J'essaie de comprendre comment fonctionnent les classes et les fonctions. J'ai donc écrit une classe avec 2 fonctions à l'intérieur. Ensuite, initié la classe avecconstructeur de classe

$fifaadmin = new FifaAdmin; 

Quand je tente d'appeler cette classe d'une autre page je reçois l'erreur suivante

appel à une fonction de membre leagueToReplace() sur un non-objet

Qu'est-ce que je fais mal? Y a-t-il une réponse évidente? Merci

+0

Vous devez fournir plus de contexte de code - montrer les définitions de classe, etc. – Amber

Répondre

1

Sons comme $fifaadmin n'a pas instancier l'objet correctement.

Qu'est-ce que cela signifie?

var_dump($fifaadmin instanceof FifaAdmin); 

Il doit retourner true si elle est correctement configuré. Essayez-le juste avant d'appeler une méthode.

Lorsque vous dites une autre page, voulez-vous dire à partir d'un PHP include ou une nouvelle URL (et donc une demande)?

Vous devrez l'instancier à chaque requête, car HTTP est sans état.

+0

Renvoie false! Sur une autre page, comme un fichier include ouais. La fifaadmin est une classe sur une page appelée fifaadmin.php qui est un include. Quand je dis $ fifaadmin-> method1(); il devrait utiliser cette méthode. – sark9012

+0

Assurez-vous que la définition de classe est incluse avant d'essayer de créer une instance de l'objet. – alex

+0

Cela est également vrai dans le cas où vous enregistrez un objet d'une classe personnalisée dans la session PHP. – kiamlaluno

2

Vous devez instancier la classe sur chaque page. Chaque script est exécuté indépendamment.

1

Selon ce que votre code fait, vous pouvez utiliser static méthodes:

// common.php 
class Common { 
    public static function calculate($x, $y) { 
     return $x + $y; 
    } 
} 

// another PHP file: (you still need to include common.php 
// you won't need to instantiate the class 

echo Common::calculate(10, 20); 
1

Si vous souhaitez utiliser une instance de classe dans différentes pages, vous avez besoin de sérialisation et l'enregistrer quelque part (séance est ok) et dé-sérialiser quand vous voulez l'utiliser.

Plus de détails sur serialize en PHP ici http://php.net/manual/en/function.serialize.php

Questions connexes