2017-09-18 1 views
0

J'ai inspecté le code, en lisant des questions sur StackOverflow, mais je ne comprends tout simplement pas, ou plutôt je ne comprends pas les explications et/ou la logique derrière cela.Utilisation PHP de define et __DIR__ explication

considérer les points suivants

Si j'ai une structure de répertoires comme celui-ci

enter image description here

Maintenant, je veux définir le fichier head.php être globalement accessible dans toute l'application (comme un exemple)

define('Head', __DIR__ .'/views/head.php'); 

Si je fais ce qui précède, je reçois le fo résultat llowing:

C: \ xampp \ htdocs \ CarRental/vues/head.php »

Ce qui est techniquement ce que je veux ,, mais, notez l'URL contient en avant et barre oblique inverse? Puis-je avoir accès au fichier head.php en appelant Head n'importe où dans mon arborescence de répertoires? Je suis désolé, j'ai inspecté le code et lu le manuel et les questions ici, si quelqu'un pouvait donner à une recrue une explication claire, il serait grandement apprécié.

MISE À JOUR:

Lorsque je tente de faire ce qui suit dans landingPage.php je reçois les erreurs suivantes

include_once Head; 

Avis: Utilisation de la tête constante indéfinie - supposé 'Head' dans C : \ xampp \ htdocs \ carRental \ views \ landingPage.php sur la ligne 2

Avertissement: include_once (Head): impossible d'ouvrir le flux: aucun fichier de ce type ou répertoire dans C: \ xampp \ htdocs \ c arRental vues \ \ landingPage.php sur la ligne 2

Warning: include_once(): échec d'ouverture 'tête' pour inclusion (include_path = 'C: \ xampp \ php \ PEAR') dans C: \ xampp \ htdocs \ CarRental \ vues \ landingPage.php sur la ligne 2

+0

Pourquoi, ce qui se passe si vous essayez de 'include_once Head;'? Les barres obliques devraient être bien. Voyez-vous une erreur spécifique? –

+0

@DarenChandisingh s'il vous plaît voir mise à jour à la question – Marilee

+1

Vous essayez d'inclure 'Head' à partir d'un fichier que vous n'avez pas défini. * Constante undefined Head * semble impliquer que – apokryfos

Répondre

1

Lorsque vous utilisez define('Head', __DIR__ .'/views/head.php'); vous avez hardcoded les barres obliques dans la définition.

Cependant les fenêtres par des utilisations par défaut \ comme séparateur de répertoire par défaut afin __DIR__ utiliseront \ dans le chemin quand dans Windows (il est ok avec l'utilisation / comme alternative une si il ne devrait pas être un problème).

Vous pouvez faire ce qui suit si vous voulez être cohérent:

define('Head', __DIR__ .DIRECTORY_SEPARATOR ."views".DIRECTORY_SEPARATOR ."head.php"); 
0

ce qui est techniquement ce que je veux ,, mais, notez l'URL contient en avant et barre oblique inverse?

oui

Puis-je avoir accès au fichier head.php en appelant la tête partout dans mon arborescence?

pas

Le mélange de barres obliques foreward et arrière est créé par votre commande __DIR__ crée C:\xampp\htdocs\carRental et '/views/head.php' est la chaîne que vous ajoutez.Pour pouvoir utiliser votre HEAD défini, vous devez charger le fichier php qui le définit. Un autre fichier php ne sait pas ce que ce fichier fait ou ne fait pas tant qu'il n'est pas persistant. (Que vous ne faites pas dans le code fourni) Pour charger un fichier et rendre votre définition l'utilisation disponible include_once/require_once

0

__DIR__ résoudra toujours dans le répertoire absolu du fichier utiliser.

La raison pour les commandes recto et verso. Cette partie:

C:\xampp\htdocs\ 

Chemin de fichier Windows. Cette partie:

carRental/views/head.php 

est le chemin du serveur web, i.e. pas Windows.

Votre définition contiendra le chemin de fichier correct alors essayez d'inclure maintenant:

include_once Head;