12
votes

PHP Définir () ne semble pas fonctionner avec inclure ()

J'ai essayé ma main à OO PHP et j'ai actuellement trois fichiers. J'ai un class_lib.php qui, pour le moment, il suffit d'une classe DatabaseServer, d'un fichier index.php et d'un fichier de définitions.php. Je veux mettre toutes mes informations de base de données sensibles dans le fichier de définitions. Cependant, lorsque je le fais, je reçois une erreur lors de la tentative de connexion à la base de données: "Server unkown db_host". Mon fichier de définitions est le suivant: xxx

puis je les utilise dans le fichier d'index comme: xxx

et la fonction que j'utilise dans les bases de donnéesServer La classe est la suivante: xxx

Des idées Pourquoi cela ne fonctionnerait pas? J'ai également essayé de mettre le fichier de définitions dans un fichier Inclure dans le fichier CLASS_LIB, mais cela ne fonctionne toujours pas.


8 commentaires

Tout d'abord, n'utilisez pas besoin / include comme fonction car ce n'est pas le cas. Que se passe-t-il lorsque vous définissez ces constantes dans le fichier d'index?


Cela devrait fonctionner bien et je n'ai jamais vu cela ne fonctionne pas. Êtes-vous sûr à 100% que l'inclut est dans le bon ordre? Pouvez-vous effectuer des sorties de test des valeurs constantes dans le fichier "définition.php" et le fichier d'index?


@Kemo Quel est le problème avec l'utilisation de Inclure avec des accolades?


@Pekka C'est une construction de langue, pas une fonction, donc c'est une bonne pratique de l'utiliser sans accolades.


@Kemo mais pourquoi? Tant que c'est cohérent dans un projet, je ne vois pas vraiment la différence entre l'utiliser avec ou sans accolades. Est-ce qu'il y a un? Après tout, inclure peut avoir une valeur de retour.


@Kemo Que voulez-vous dire pour ne pas utiliser besoin / include en tant que fonction? Pas sûr d'être? @Pekka j'ai réalisé mon erreur lorsque j'ai essayé une sortie de test - j'ai dactylographié le nom de fichier. Pas dans l'inclut, mais le nom de fichier lui-même. Maintenant, je me sens comme un idiot, haha.


@Saladin pas de problème, il nous arrive à tous. Je vais ajouter le commentaire comme une réponse afin que la question puisse être fermée.


@Pekka Bien sûr, il a une valeur de retour et il ne retournera pas de mètre s'il est utilisé avec ou sans accolades. La cohérence est importante cependant, bon point.


7 Réponses :


4
votes

Cela devrait fonctionner bien et je ne l'ai jamais vu ne pas fonctionner.

  • faire 100% sûr que l'inclut est dans le bon ordre (les définitions doivent être chargées d'abord)

  • Effectuez des sorties de test des valeurs constantes dans le fichier "définition.php" et le fichier d'index

  • faire 100% sûr que vous appelez les bons fichiers


2 commentaires

Je suis arrivé ici parce que j'ai essayé définir ("public", __dir__) . Cela vient de travailler quand je change public à public_path et j'ai remarqué que le public est un mot réservé .


vérifié tout mais pas de succès



1
votes

appeler it config.php xxx

inclure ("config.php"); sur vos pages


0 commentaires

2
votes

Vérifiez si votre serveur prend en charge Short_OPEN_TAG Cette valeur serait commentée. Je viens de l'avoir activé avec et ça a commencé à travailler.


1 commentaires

C'est totalement ce qui l'a causé dans mon cas. Ce n'est pas dans l'exemple ci-dessus, mais si votre fichier commence par par opposition à Il ne sera pas analysé comme php dans des versions plus modernes de la langue. Je viens de frapper cela après une mise à jour du système d'exploitation du serveur.



0
votes

Il vous suffit de passer les fonctions définissez du fichier Destinations et de le transférer dans le fichier source (dans votre cas "traduction.php") et prêt à travailler!

Comme si ceci, le bogue avec définir des fonctions sur la réception des paramètres de chaîne ne se produit pas et que vous inclurez les constantes implémentées déjà.

J'ai fait face à ce problème et je me suis retrouvé juste cette solution.


1 commentaires

Qui manque tout point de mettre les définir dans un fichier séparé.



-2
votes

La clé de ceci utilise la fonction constante () pour extraire la valeur des constantes définies: xxx


0 commentaires

1
votes

TRAVAILLE

<?php
define('KLINGON_SEPARATOR', '');


0 commentaires

0
votes

J'ai eu un problème similaire aujourd'hui et il semble éventuellement être un code de caractères non valide à la fin du fichier. J'ai trouvé ceci sur la pile PHP Définir ne pas enregistrer les constantes son solution (enlever des espaces supplémentaires) travaillé pour moi.


0 commentaires