Parantatatam
mag Cookies & Kekse
Hallo,
ich habe gerade ein sehr witziges, aber doch sehr nervendes Problem mit require_once() [require(), include(), include_once() ebenso]. Wenn meine autoload.php geladen wird [eingebunden per require()], dass mir am Anfang die Dateien korrekt als PHP-Dateien geladen werden, später aber auf einmal nur noch der Quelltext als Text geladen und ausgegeben wird und mir aber auch ein Fatal Error gezeigt wird, weil die Datei nicht als Programm geladen wurde. Nun stellt sich mir natürlich die Frage, warum das so ist und zweitens, warum das auf einmal so ist, ohne das ich etwas geändert habe.
So sieht meine autoload.php aus:
Diese Datei wird in meiner index.php aufgerufen, welche im gleichen Verzeichnis auf der gleichen Verzeichnisebene liegt.
Meine Ordnerstruktur:
ich habe gerade ein sehr witziges, aber doch sehr nervendes Problem mit require_once() [require(), include(), include_once() ebenso]. Wenn meine autoload.php geladen wird [eingebunden per require()], dass mir am Anfang die Dateien korrekt als PHP-Dateien geladen werden, später aber auf einmal nur noch der Quelltext als Text geladen und ausgegeben wird und mir aber auch ein Fatal Error gezeigt wird, weil die Datei nicht als Programm geladen wurde. Nun stellt sich mir natürlich die Frage, warum das so ist und zweitens, warum das auf einmal so ist, ohne das ich etwas geändert habe.
So sieht meine autoload.php aus:
PHP:
<?php
require_once 'include/inc.database.php';
if(version_compare(phpversion(), '5.1.0', '<')) {
trigger_error('PHP version must be greater or equal 5.1.0. Your PHP version is '.phpversion());
}
// Umgebungskonstanten definieren
define('CONF_DIR', 'conf/'); // Dateipfad zur autoload.ini
define('ROOT_DIR', dirname(__FILE__)); // Pfad zum Wurzelverzeichnis (von dieser Position aus) definieren
define('CLASS_DIR', ROOT_DIR.'/class');
// Laedt Klassen aus den definierten Verzeichnissen
function __autoload($class) {
// Klassennamen vorbearbeiten
$class = strtolower(iTrim($class));
// Gekennzeichnet als abstrakte Klasse
$type = substr($class, 0, 8) == 'abstract' ? 1 : NULL;
// Gekennzeichnet als Interface
$type = substr($class, 0, 9) == 'interface' ? 2 : $type;
// Klassentyp waehlen
switch($type) {
// abstrakte Klasse
case 1:
$load = '/abstract.'.substr($class, 8).'.php';
break;
// Interface
case 2:
$load = '/interface.'.substr($class, 9).'.php';
break;
// Normale Klasse
default:
$load = '/class.'.$class.'.php';
break;
}
// Wenn die Datei geladen werden konnte
if(file_exists(CLASS_DIR.$load)) {
require_once CLASS_DIR.$load;
}
// Wenn die Datei nicht geladen werden konnte
else {
trigger_error('__autoload('.CLASS_DIR.$load.') failed to open stream: No such file or directory', E_USER_WARNING);
}
}
?>
Meine Ordnerstruktur:
Code:
> ...
> autoload.php
> class
>>> abstract.basic.php (wird richtig geladen)
>>> class.basic.php (wird richtig geladen)
>>> class.teacher.php (wird richtig geladen)
>>> class.addteacher.php
>>> class.editteacher.php
>>> ...
> index.php
> ...