it-swarm.com.de

mit PHP __DIR__

Ich versuche, eine config.php-Datei zu erstellen, die eine globale Variable definiert, die den Pfad zu einem Verzeichnis mit dem Namen "projectfiles" enthält. Die Idee ist, dass jede Datei auf dieses Verzeichnis zeigen kann, unabhängig davon, wo sie sich im Dateibaum befindet. 

Kann ich __DIR__ dafür verwenden? Wäre jemand bereit, mir ein Beispiel zu geben, wie dies funktionieren könnte? Ich dachte an etwas wie das Folgende:

Ich möchte hier ein Verzeichnis definieren: in der /config.php-Datei

$projectfiles = __DIR__("projectfiles/")

Dann möchte ich, dass eine Bibliotheksdatei diese Variable in /venders/library/generalfunctions.php-Datei verwenden kann

include("../../../config.php");
$file = $projectfiles/testfile.php

Vorschläge?

14
Jeff

__DIR__ ist sicherlich das, wonach Sie suchen. Verwenden Sie es, um relative Pfade für die erforderlichen Dateien anzugeben. Ich würde dringend empfehlen, require_once oder include_once für alle Bibliotheksdateien zu verwenden.

if( !defined( __DIR__ ) ) define( __DIR__, dirname(__FILE__) );
require_once( __DIR__ . '/../../../config.php');
.
.
.
// you code here

Die Verwendung der ersten Zeile stellt sicher, dass Sie mit PHP 5.2 und zurück keine Probleme bekommen. Auf diese Weise können Sie Dateien einschließen, die auf der Verzeichnisstruktur basieren und nicht relativ zum aufgerufenen Skript. Viele Frameworks verwenden stattdessen dirname(__FILE__), aber es ist ziemlich verschwenderisch, mehr als einmal ausgeführt zu werden. Es ist besser, es irgendwo mit einem Scheck hinzuzufügen.

6
Garet Claborn

Es sieht so aus, als sei die Architektur dieser Anwendung nicht optimal, aber ohne mehr darüber zu wissen, kann ich das nicht kommentieren.

Ich empfehle, es als Konstante zu definieren, damit es nicht geändert werden kann und unabhängig vom Gültigkeitsbereich verfügbar ist.

define('PROJECTFILES',__DIR__.'/projectfiles/');

Angenommen:
/config.php
/projectfiles/include_me.php

include(PROJECTFILES.'include_me.php');

Denken Sie daran, dass __DIR__ auf das Verzeichnis verweist, in dem sich config.php befindet. Wenn config.php der übergeordnete Ordner von projectfiles ist, funktioniert das obige.