PHP-Klasse nicht gefunden [geschlossen]

7

Ich habe diese Frage selbst gelöst. Der Dateiname war falsch lolz.

Hallo an alle!

Ich baue ein CMS wie Drupal und Joomla. Ich arbeite an der Modulfunktion (Plugins), und ich habe den folgenden Fehler:

%Vor%

Hier ist mein Code:

start.php

%Vor%

settings.php

%Vor%

core.php

%Vor%

view.php

%Vor%

Start.php wird offensichtlich zuerst ausgeführt. Mit Ausnahme von customsettings.php, das Datenbankinformationen enthält, werden keine anderen Seiten davor ausgeführt. Wenn ich in meinem obigen Code $ _SERVER ["db_prefix"] verwendet habe, dann habe ich einen Superglobal benötigt, der in customsettings.php gesetzt ist:

customsettings.php

%Vor%

Kann mir jemand helfen? Es scheint, dass die index-Funktion von view.php aufgerufen wird, bevor settings.php enthalten ist. Tut mir leid, wenn diese Frage riesig ist, ich möchte nur klar sein. Sagen Sie auch nicht eval () ist böse, ich weiß.

Ich möchte also wissen, warum die Einstellungs-Klasse nicht gefunden wurde. Wenn Sie mehr Quellcode benötigen, kommentieren Sie bitte diese Frage.

    
Bram 24.07.2009, 19:21
quelle

5 Antworten

29

Obwohl Sie erwarten, dass die Datei "settings.php" für die Datei "view.php" verfügbar ist, weil sie in einem Skript enthalten war, das beide enthält, habe ich festgestellt, dass dies normalerweise nicht der Fall ist. Sie haben ein paar Möglichkeiten:

  • require_once alle Dateien, die jede Klasse in jeder Klassendatei benötigt
  • Schreiben Sie eine Funktion __autoload() , damit PHP alle Ihre Klassen finden kann, wann immer es denkt es braucht einen

Die zweite Option ist flexibler.

Wenn Sie wissen möchten, dass Klassen an einem bestimmten Ort verfügbar sind, versuchen Sie get_declared_classes()

    
dnagirl 24.07.2009, 19:35
quelle
7

Das Folgende trifft im Fall von OP nicht zu, aber könnte anderen helfen.

Überprüfen Sie, ob Ihr Code die Kurztags <? anstelle von <?php verwendet und wenn ja, dann überprüfen Sie Ihre php.ini für short_open_tag Einstellung.

Standardmäßig ist es deaktiviert, aber wenn Sie Ihre PHP-Installation von jemand anderem erben ...

    
Konstantin 01.11.2014 08:40
quelle
4

Nur für den Fall, dass jemand auf diese Frage stolpert, hatte ich auch dieses Problem und ich löste es, indem ich sicherstellte, dass der Name der PHP-Datei mit dem Namen der PHP-Klasse innerhalb der eigentlichen Datei identisch war.

Dumm, ich weiß.

    
ohnoes_stackoverflown 12.01.2014 22:07
quelle
0

Es gibt ein anderes Problem, das auftreten kann und es ist es wert, dass es jemand weiß. Wenn Sie __autoload () verwenden und in der Datei, die die Klasse enthält, die automatisch geladen wird, schreiben Sie Ihre PHP-Tags falsch, es wird ein Fehler der Klasse nicht gefunden zurückgegeben:

Datei App.php

%Vor%

Datei index.php

%Vor%

Der obige Code funktioniert nicht. Damit es funktioniert, müssen Sie das kurz öffnende PHP-Tag App.php durch ein langes ersetzen:

%Vor%

Es gibt viele Kommentare, die über kurze Tags, die verwendete PHP-Version, die php.ini-Datei und den Rest gemacht werden könnten. Aber es ist irrelevant. Verwenden Sie einfach die lange Version des PHP-Tags

    
JG Estiot 09.10.2014 13:04
quelle
0

Ich hatte das gleiche Problem. Manchmal ist es ein Problem mit dem Pfad.

Anstelle von:

%Vor%

Versuchen Sie:

%Vor%     
superdario128 16.06.2016 23:53
quelle