9
votes

Comment accéder à une classe extérieure définie constante?

J'ai défini certaines constantes, par exemple: xxx pré>

maintenant lorsque j'essaie de le faire: p>

class Auth{
function AuthClass() {
$this->db_link = mysql_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD) 
or die(mysql_error());
}
}


1 commentaires

Si vous obtenez cette erreur, la définition définitivement n'est pas définie lorsque la méthode est invoquée.


3 Réponses :


11
votes

Lorsque le script est exécuté, les définitions de la classe constante et de la classe doivent être incluses.

par exemple par exemple

constantes.php.inc xxx

Auth.php.inc xxx

script.php xxx


6 commentaires

Umm. Cela ne fait vraiment rien pour résoudre le problème car les classes ne reconnaissent pas les variables définies en dehors de la portée de la classe. Tout cela est réorganisé les informations avec exactement le même résultat.


@ Joseph Constantes ne sont pas des variables et elles sont effectivement reconnues à l'intérieur de toute fonction / méthode exécutée après leur définition. Ceci est une réponse valide et peut en effet répondre à la question.


La réponse ci-dessus est le problème que j'ai


@Ashley Ward Voir ici CODEPAD.VIPER-7.COM/WCDT6R Comme vous pouvez le voir, vous peut accéder à des définis définies dans une classe.


Vous êtes correct et je suis humilié. Il doit y avoir d'autres erreurs avec mon code.


Je suis corrigé aussi bien. Supprimer ma réponse afin de ne pas mal diriger d'autres demandeurs.



2
votes

Il devrait fonctionner aussi longtemps que vous avez défini les constantes avant authlass () code> exécute. S'ils ne sont pas dans le même fichier que votre classe auth code>, vous devez d'abord les inclure dans le fichier que auth code> réside afin qu'il puisse les voir:

include("the_file_that_has_those_constants_in_it.php");


0 commentaires

1
votes

On dirait que vos constantes ne sont pas définies avant d'instancier la classe auth . Lorsque vous utilisez une constante non définie de cette façon, PHP émettra un avertissement et le convertira à une chaîne. Si le problème est effectivement que vos constantes ne sont pas définies, votre code sera effectivement interprété comme suit: xxx

étant donné l'erreur que vous obtenez (), je suppose que c'est ce qui se passe.

Au fur et à mesure que d'autres réponses State, assurez-vous que vous définissez les constantes avant de tenter d'appeler auth :: authlass . Si la classe et les constantes DB_ * sont définies dans différents fichiers, assurez-vous que les deux fichiers sont inclus avant de tenter d'instancier / d'utiliser la classe auth .


en tant que Misté, les constantes définies sont pas de variables. Vous ne pouvez pas utiliser Global Constat_Name; de cette manière, et vous n'avez pas besoin de - toutes les constantes sont toujours globales et disponibles partout après la définition du point. Un test simple prouve ceci:

xxx


0 commentaires