2017-05-19 1 views
0

Ich habe eine folgende Verzeichnisstruktur für mein Projekt, in dem ich Init.php Datei unter core Ordner habe. Ich wollte diese Datei auf allen Seiten unter dem Ordner views einfügen, um alle meine unter classes Ordner definierten Klassen automatisch zu laden. Aber wenn ich mit bin require_once '../../core/Init.php'; aus einem Unterverzeichnis von views Ordner, um es mirWie man Konfigurationsdatei in mehrere Verzeichnisse php seiten

folgende Fehler gibt

require_once (Klassen/Config.php): failed to open stream: No such file or directory in

Einschließlich dieser Datei in alle Seiten unter dem views Ordner

require_once 'core/Init.php'; 

Kern/init.php

spl_autoload_register(function($class) {  
    require_once 'classes/' . $class . '.php'; 
}); 

Meine Verzeichnisstruktur ist als unten

Directory Structure

Ich möchte diese einzelne Datei schließen (core/Init.php) in alle meine Dateien, Verzeichnisse und Unterverzeichnisse von Ansichten Ordner. Jeder hat eine Idee, wie ich es machen würde.

Danke!

Antwort

0

Die Ursache Ihres Problems ist, dass Ihr Code tatsächlich aus mehreren Verzeichnissen ausgeführt wird.

Stattdessen sollte es über einen einzigen Einstiegspunkt (in der Regel als "Bootstrap-Datei") aufgerufen werden.

Im Grunde tun Sie so etwas.

$config = require __DIR__ '/../config.php'; 
$page = $_GET['page'] ?? 'home'; 

if (in_array($page, $whitelist)) { 
    require __DIR__ . "/path/to/pages/{$page}.php"; 
} 

Oh, und beziehen Sie sich nicht auf Ihre Vorlage als "Ansichten". Sie sind nicht.

0

Struktur! Wenn Sie die Anwendung starten sie sagen, wo zu finden, Dinge dann die Dinge, die spl_autoload_register Funktion und Einrichtung hinzufügen, die immer zugänglich sind:

.../www/index.php 
eg (in index.php): 
chdir(__DIR__): 

Jetzt beginnt alles bei .../www/Verzeichnis. Von diesem Punkt aus können Sie beginnen, alle Pfade einzurichten, die Sie einschließen möchten. Relativ oder absolut.

Mit freundlichen Grüßen

Verwandte Themen