2017-09-18 1 views
0

Ich habe Code untersucht, Fragen auf StackOverflow gelesen, aber ich verstehe es einfach nicht, oder eher verstehe ich nicht die Erklärungen und/oder Logik dahinter.PHP Verwendung von define und __DIR__ Erklärung

Betrachten Sie das folgende

Wenn ich eine Verzeichnisstruktur wie diese

enter image description here

Jetzt habe ich die head.php Datei festlegen möchten in der gesamten Anwendung global zugänglich sein (nur als Beispiel)

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

Wenn ich die oben tun, erhalte ich die fo llowing Ergebnis:

C: \ xampp \ htdocs \ CarRental/views/head.php“

technisch, was ich will ,, aber bemerken die URL enthält zukunftsgerichtete Aussagen und Schrägstriche?

Kann ich auf die head.php-Datei zugreifen, indem ich irgendwo in meinem Verzeichnisbaum Head anrufe?

Es tut mir leid, Ive Code inspiziert und lesen Sie das Handbuch und Fragen hier, wenn jemand einem Rookie eine klare Erklärung geben könnte, würde es sehr geschätzt werden.

UPDATE:

Wenn ich versuche, den folgend in landingPage.php zu tun, erhalte ich die folgenden Fehler

include_once Head; 

Hinweis: Die Verwendung von undefinierter Konstante Head - angenommen 'Kopf' in C : \ xampp \ htdocs \ CarRental \ Ansichten \ landingPage.php on line 2

Warning: include_once (Kopf): failed to open stream: Datei oder Verzeichnis in C: \ xampp \ htdocs \ c arRental \ Ansichten \ landingPage.php on line 2

Warning: include_once(): Fehlgeschlagen 'Kopf' für die Aufnahme Öffnung (include_path = 'C: \ xampp \ php \ PEAR') in C: \ xampp \ htdocs \ CarRental \ views \ landingPage.php on line 2

+0

Warum, was passiert, wenn Sie 'include_once Kopf versuchen,'? Die Schrägstriche sollten in Ordnung sein. Siehst du einen bestimmten Fehler? –

+0

@DarenChandisingh siehe Update in Frage – Marilee

+1

Wahrscheinlichkeiten sind Sie versuchen, 'Head' aus einer Datei enthalten, die Sie nicht definiert haben. * Undefined Konstante Head * scheint zu implizieren, dass – apokryfos

Antwort

1

Wenn Sie define('Head', __DIR__ .'/views/head.php'); verwendet haben Sie die Schrägstriche in der Definition fest einprogrammiert.

jedoch Fenster standardmäßig verwendet \ als Standardverzeichnis Separator so __DIR__ werden \ im Pfad verwenden, wenn in Windows (es bei der Verwendung von / als Alternative eines in Ordnung, aber so sollte es kein Problem sein).

Sie können folgende tun, wenn Sie wollen, konsequent sein:

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

technisch, was ich will ,, aber bemerken die URL enthält zukunftsgerichtete Aussagen und Schrägstriche?

ja

Kann ich Zugriff auf die Datei head.php von Head Aufruf überall in meinem Verzeichnisbaum?

kein

Die Mischung aus foreward und Rückwärtsschrägstriche durch Ihren Befehl erstellt __DIR__C:\xampp\htdocs\carRental und '/views/head.php' schafft die Zeichenfolge Sie anhängen.

Um Ihre definierte HEAD verwenden zu können, müssten Sie die php-Datei laden, die sie definiert. Eine andere PHP-Datei weiß nicht, was diese Datei macht oder nicht, solange sie nicht beibehalten wird. (Die Sie nicht tun, in den Code zur Verfügung gestellt) Um eine Datei zu laden, und machen Sie Ihre Definition verfügbar Verwendung include_once/require_once

0

__DIR__ wird immer auf das absolute Verzeichnis der Datei lösen Sie es.

Der Grund für Vorwärts- und Backslashes. Dieser Teil:

C:\xampp\htdocs\ 

Ist Windows Dateipfad. Dieser Teil:

carRental/views/head.php 

Ist der Webserver-Pfad, das heißt nicht von Windows.

Ihr definieren wird die richtige Dateipfad halten, so versuchen, es schließen jetzt:

include_once Head;