php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.06.2010, 09:56  
Erfahrener Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 145
nuna befindet sich auf einem aufstrebenden Ast
Standard Autoload: Klasse wird nicht eingebunden, obwohl der Pfad stimmt

PHP-Code:
function __autoload($classname) {

    list(
$folder$class) = explode('_'$classname);
    
    
// Ausgabe: C:\xampp\htdocs\lib\registry.php
    // Ausgabe: C:\xampp\htdocs\core\mydb.php
    // Ausgabe: C:\xampp\htdocs\model\terminmodel.php
    
print_r(ROOT DS strtolower($folder) . DS strtolower($class) . '.php');

    require_once(
ROOT DS strtolower($folder) . DS strtolower($class) . '.php');
}

$cont Lib_Registry::getInstance();
$cont->db = new Core_MyDB;
$ont->termin = new Model_TerminModel
Dieser Autoloader steht im index.php ganz oben. Obwohl die Pfade richtig sind, gibt es mir einen Fatal error.
Zitat:
Fatal error: Class 'Lib_Registry' not found in C:\xampp\htdocs\index.php on line 15
Was mache ich falsch?
nuna ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.06.2010, 09:59  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
function __autoload($classname) {
    
$class str_replace('_''/'$classname);
    require_once(
strtolower($class) . '.php');

Probier mal das.
Die Dateien in denen die Klassen liegen, sind alle klein geschrieben?

Nachtrag:
http://de2.php.net/manual/en/function.spl-autoload.php das wäre auch mal interessant, damit kann man mehrere Autoloader definieren.
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...

Geändert von Paul.Schramenko (04.06.2010 um 10:03 Uhr).
Paul.Schramenko ist offline  
Alt 04.06.2010, 10:02  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Hast Du Dir den Pfad mal ausgeben lassen? Hast Du class_exists mit dem falschen Parameter aufgerufen? Heißt die Klasse wirklich Lib_Registry?
xm22 ist offline  
Alt 04.06.2010, 10:22  
Erfahrener Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 145
nuna befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Hast Du Dir den Pfad mal ausgeben lassen?
Ich habe in meinem obigen Code diese Kommentarzeilen, dass die Ausgabe des Pfades korrekt ist.
PHP-Code:
    // Ausgabe: C:\xampp\htdocs\lib\registry.php
    // Ausgabe: C:\xampp\htdocs\core\mydb.php
    // Ausgabe: C:\xampp\htdocs\model\terminmodel.php
    
print_r(ROOT DS strtolower($folder) . DS strtolower($class) . '.php'); 
Die Klasse heißt registry, lib ist der Ordner, in dem es sich befindet. Bezüglich der Groß-Kleinschreibung stimmt auch alles. Auch sind die Dateien korrekt benamt. Obwohl er die Dateien richtig einbindet, kann ich die Klassen nicht instanziieren. Dabei bindet er sogar die geerbten Klassen richtig ein.

Model_TerminModel = model ist der Ordner in dem sich TerminModel, dass von Core_Model erbt, befindet.
nuna ist offline  
Alt 04.06.2010, 10:44  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Also wenn du Class 'Lib_Registry' ein bilden möchtest, muss:

1. die Datei im ordner lib/ liegen
2. die Datei selbst registry.php heißen
3. In der registry.php muss die Klasse Lib_Registry heißen (class Lib_Registry)

Ist das alles gegeben?
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline  
Alt 04.06.2010, 10:46  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nuna Beitrag anzeigen
PHP-Code:
    // Ausgabe: C:\xampp\htdocs\lib\registry.php
    // Ausgabe: C:\xampp\htdocs\core\mydb.php
    // Ausgabe: C:\xampp\htdocs\model\terminmodel.php 
Sach ma fehlt da nicht noch dein Projekt?
http://localhost/[Projekt]/index.php
Oder hast die direkt im htdocs drinne?
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline  
Alt 04.06.2010, 10:50  
Erfahrener Benutzer
 
Registriert seit: 06.01.2009
Beiträge: 145
nuna befindet sich auf einem aufstrebenden Ast
Standard

ich habe mein Projekt direkt in htdocs.
nuna ist offline  
Alt 04.06.2010, 14:03  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Wenn deine __autoload-Funktion aufgerufen wird, muss require_once auch eine Datei gefunden haben, denn sonst würde dein Script mit einem fatal error abbrechen.

Also kann es nur noch entweder die falsche Datei sein (nicht die, in der die Klasse Lib_Registry deklariert ist), oder es ist die Datei, die du zu laden beabsichtigt hattest, aber es steht nicht das richtige drin.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Nur einer bestimmten Klasse Zugriff andere Klasse erlauben Turamisi Software-Design 2 20.02.2010 20:31
Mysql Klasse macht Probleme in verschachtelten / verzweigten SQL Abfragen litterauspirna PHP Tipps 2010 3 16.02.2010 12:54
Grundsatzfrage zu Attributen einer Klasse sloomf PHP Tipps 2009 6 25.10.2009 07:14
Klasse für Objekteigenschaft erzeugen? Asipak PHP-Fortgeschrittene 25 30.05.2009 19:45
[Erledigt] Eine klasse einbinden newWorldOrder PHP Tipps 2009 2 23.02.2009 19:32
Mini-Tutorial: Autoload Exception bei nichtgefundener klasse brian johnson Wiki Diskussionsforum 10 23.01.2009 22:18
Methode einer anderen Klasse aufrufen Luka PHP-Fortgeschrittene 15 09.11.2008 14:19
Klasse aus externer Klasse aufrufen kostja PHP Tipps 2008 8 07.08.2008 14:13
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
Absoluten Pfad in HTML-Seite dynamisch generieren Malfunction PHP Tipps 2005 4 30.01.2005 12:05
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xampp autoload, php autoload class, xampp __autoload, php class autoload, php autoloader class, __autoload wird nicht aufgerufen, php autoload in klasse, autoload xampp, php autload \'fatal error: class \' \' not found\', __autoload pfad, php class autoloader, __autoload xampp, php __autoload klasse, php autoload klasse, php pfad klasse, autoload klasse, php klassen einbinden __autoload, php klasse wir nicht eingebunden, __autoload in index.php definieren, php __autoload in klasse

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum