J'ai une classe J'ai créé ma classe comme: p> < Code> Confirmuser Code> Fonction Prenez deux paramètres de type de chaîne et retour retour une valeur entière de 0, 1, 2. P> Je ne peux pas ajouter de code de Donc, je veux savoir comment appeler une fonction définie par l'utilisateur dans le constructeur de PHP. S'il vous plaît aide. P> merci! P> p> useraud code> à 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 code> 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. Confirmuser code> Fonction à l'intérieur Le constructeur que j'utilise cette fonction à d'autres endroits dans mon application. P>
4 Réponses :
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 Au fait, dans PHP5, vous êtes suggéré de nommer votre constructeur comme celui-ci: Si non alors placez $ ceci-> fonction () code> p>
fonction __Construction () code> p>
Public code> Mot clé avant la définition de votre constructeur comme ceci Fonction publique userAuth () Code> P>
$ ceci-> Nomoffcunction () P>
Mais quand ils sont dans une classe, ils sont appelés méthodes. p>
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.
Vous pouvez appeler avec $ ceci
Soyez prudent avec l'utilisation de $ CAIS dans un constructeur, car dans une hiérarchie d'extension, cela peut causer un comportement inattendu: sortie: p> alors que:
p> sortie: p>
Merci d'avoir expliqué cette différence très importante entre ce code> et auto :: code>
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 code> 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?