11
votes

PHP: appeler une fonction définie par l'utilisateur dans le constructeur?

J'ai une classe useraud à l'intérieur de son constructeur, j'ai ajouté le code pour vérifier que l'utilisateur est valide ou non, s'il n'y a pas de valeur en session, alors je vérifie les cookies (dans le cadre de "Sen souvenir de moi "Caractéristique), s'il y a une certaine valeur dans les cookies, j'appelle une fonction confirmuser pour vérifier son authenticité à partir de la base de données. Sur la base de la valeur renvoyée par la fonction ConfirmUser, je retourne une valeur BOOL (vraie ou Fales) dans le constructeur.

J'ai créé ma classe comme: xxx

< Code> Confirmuser Fonction Prenez deux paramètres de type de chaîne et retour retour une valeur entière de 0, 1, 2.

Je ne peux pas ajouter de code de Confirmuser Fonction à l'intérieur Le constructeur que j'utilise cette fonction à d'autres endroits dans mon application.

Donc, je veux savoir comment appeler une fonction définie par l'utilisateur dans le constructeur de PHP. S'il vous plaît aide.

merci!


3 commentaires

Mettre du code en question. Il n'y a pas de différence sur laquelle appeler fonctionne.


Assurez-vous d'inclure / requis pour la déclaration de confirmation de la fonction, et vous pouvez appeler confirmuser Inside constructeur ... Quel est le problème?


Vous avez dit que vous retournez un bool dans le constructeur qui est un peu étrange. Un constructeur ne peut rien retourner qu'une instance de sa classe. Peux-tu élaborer?


4 Réponses :


3
votes

Il n'y a pas de différence entre appeler une fonction dans un constructeur et appeler ailleurs. Si la méthode est déclarée dans la même classe, vous devez utiliser $ ceci-> fonction ()

Au fait, dans PHP5, vous êtes suggéré de nommer votre constructeur comme celui-ci:
fonction __Construction ()

Si non alors placez Public Mot clé avant la définition de votre constructeur comme ceci Fonction publique userAuth ()


0 commentaires

29
votes

$ ceci-> Nomoffcunction ()

Mais quand ils sont dans une classe, ils sont appelés méthodes.


1 commentaires

Je soupçonne que vous pensiez que jusqu'à ce que le constructeur soit terminé, il n'y avait pas de «$ ceci» pour appeler des méthodes sur; mais il y a. Dans PHP, le nouvel objet existe et "$ Celui-ci" pointe-y, dès qu'il pénètre dans le constructeur.



2
votes

Vous pouvez appeler avec $ ceci xxx


0 commentaires

6
votes

Soyez prudent avec l'utilisation de $ CAIS dans un constructeur, car dans une hiérarchie d'extension, cela peut causer un comportement inattendu: xxx

sortie: xxx

alors que: xxx

sortie: xxx


1 commentaires

Merci d'avoir expliqué cette différence très importante entre ce et auto ::