sockä Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 Hi, also ich habe eine Klasse geschrieben, die recht lang wurde (ca 500 Zeilen). Nun wollte ich die der Übersicht halber in eine eigene Datei packen und in einer anderen Datei die Objekte erzeugen. Hatte gedacht, ich könne über require() die Klasse-Datei einbinden, aber leider kommt dann immer beim Erzeugen eines Objektes ein Fehler, dass die Klasse nicht gefunden wurde.... wie mache ich das nun? Ich stehe auf m Schlauch... *urgs* Beispiel wie ich es dachte: klasse.php: class MeineKlasse { var x .... } inhalt.php: require('klasse.php'); ... objekt1 = new MeineKlasse(); Und das geht nicht über require() ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dreadlord Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 Schon mal mit require_once() oder include() probiert? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 3. März 2005 Autor Teilen Geschrieben 3. März 2005 Ja.... leider Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bionaut Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 objekt1 = new MeineKlasse(); Versuche es einmal so objekt1 = new MeineKlasse; Gruessle bio* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 Ja.... leider das muss so gehen.... hast du vielleicht das "<?php" oder "'?>" in den include file vergessen? Stimmt der pfad zum include? Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 3. März 2005 Autor Teilen Geschrieben 3. März 2005 das muss so gehen.... muss auch.... habe aber mal meinen browser geschlossen, cache geleert und dann nochmal aufgerufen... dann gehts .... sehr strange. aber dankeschön ))) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 muss auch.... habe aber mal meinen browser geschlossen, cache geleert und dann nochmal aufgerufen... dann gehts .... sehr strange. aber dankeschön ))) Während der Entwicklung einer Seite immer den Reload mit CTRL + F5 machen, dann leert er den Cache vorher. Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 Hallo, eine 500 Zeilen lange Klasse dürfte sich wohl noch optimieren lassen. Ich denke, sehr viele Dinge darin kann man in andere Klassen aufteilen, denn 500 Zeilen sind definitiv zu lang. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sockä Geschrieben 3. März 2005 Autor Teilen Geschrieben 3. März 2005 CTRL + F5 Den Shortcut kannte ich noch gar nicht, danke 500 Zeilen sind definitiv zu lang. Warum denn? Ich finde, man solle die Klassen nach Aufgaben definieren. Wenn eine Klasse eine umfangreiche Aufgabe hat und es viele Attribute gibt (dementsprechend auch viele Getter/Setter), man noch viel dokumentiert (ich z.B. schreibe über jede Methode einen schön formatierten 5-Zeile zur Aufgabe der Methode), dann ist das doch ok. Als Beispiel nur mal eine Klasse, die die Kommunikation mit einem Datenbankserver übernimmt. Wenn du dort alle von PHP unterstützen Datenbanken ansprichst (quasi als universelle DB-Klasse), Exceptions abfängt, Error-Handling etc. dann kommt man schnell auf die Länge. Man sollte doch nicht alleine die Länge einer Datei als Kriterium nehmen für eine Klasse sondern die Aufgaben. Wenn eine Klasse mehrere Aufgaben hat, dann muss man auslagern - aber wenn nicht dann halt ich es nicht gerade für sinnvoll.... so long... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 (dementsprechend auch viele Getter/Setter), Ich muss zugeben, dass ich in PHP bisher noch nicht objektorientiert programmiert habe, aber das OO Konzept ist mir schon geläufig. Wenn du sehr viele Getter und Setter benutzt, ist das u. U. schon ein Designproblem, denn dann kannst du auch prüfen, ob ein direkter Zugriff auf die Variable nicht sinnvoll wäre. Als Beispiel nur mal eine Klasse, die die Kommunikation mit einem Datenbankserver übernimmt. Wenn du dort alle von PHP unterstützen Datenbanken ansprichst (quasi als universelle DB-Klasse), Exceptions abfängt, Error-Handling etc. dann kommt man schnell auf die Länge. Genau das soll ja nicht passieren. Die Kunst besteht ja darin, erstmal die grundlegendsten Dinge in eine Klasse zu packen, und konkretere Klassen davon erben zu lassen. So gäbe es z. B. eine Klasse dbAccess, von der die Klasse mysqlAccess und oracleAccess erben würden. So hättest du die letzteren beiden Klassen schonmal nicht so extrem vollgestopft. Man sollte doch nicht alleine die Länge einer Datei als Kriterium nehmen für eine Klasse sondern die Aufgaben. Wenn eine Klasse mehrere Aufgaben hat, dann muss man auslagern - aber wenn nicht dann halt ich es nicht gerade für sinnvoll.... so long... Da hast du natürlich recht, aber bei 500 Zeilen gehen bei mir nur die Alarmglocken an. Aber da ich das OO-Konzept von PHP 5 noch nicht so verinnerlicht habe und nicht weiss, wie konsequent man dort OO programmieren kann, kann ich dazu weiter erstmal nix sagen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Habi Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 Ich muss zugeben, dass ich in PHP bisher noch nicht objektorientiert programmiert habe, aber das OO Konzept ist mir schon geläufig. Wenn du sehr viele Getter und Setter benutzt, ist das u. U. schon ein Designproblem, denn dann kannst du auch prüfen, ob ein direkter Zugriff auf die Variable nicht sinnvoll wäre. PFUI, PFUI, PFUI. Niemals nicht direkten Zugriff auf Variablen der Klasse *Hölle_Hölle_Hölle* ;-) Wenn man zuviele getter und setter hat, dann ist das in PHP5 kein Problem mehr (Stichwort __get und __set) Das hilft ein wenig um die Menge zu lindern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 3. März 2005 Teilen Geschrieben 3. März 2005 Wenn man zuviele getter und setter hat, dann ist das in PHP5 kein Problem mehr (Stichwort __get und __set) Das hilft ein wenig um die Menge zu lindern. Das ist auf jeden Fall richtig, leider gibts das halt erst ab PHP 5 Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
freq.9 Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 Das ist auf jeden Fall richtig, leider gibts das halt erst ab PHP 5 Gruß, Markus Man kann sich die Exceptions ins php4 schreiben, so wird man sich __get und __set bestimmt auch irgendwie selbst schreiben können. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. März 2005 Teilen Geschrieben 4. März 2005 Man kann sich die Exceptions ins php4 schreiben, so wird man sich __get und __set bestimmt auch irgendwie selbst schreiben können. Das würde mich sehr interessieren wie das geht. Hast du dazu ein paar Links? Sicherlich muss man dazu ein paar C libs selbst einbinden oder? Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
freq.9 Geschrieben 5. März 2005 Teilen Geschrieben 5. März 2005 Das würde mich sehr interessieren wie das geht. Hast du dazu ein paar Links? Sicherlich muss man dazu ein paar C libs selbst einbinden oder? Gruß, Markus Also die Exceptions in php4 hab ich bei der Blogging-Software pLog gefunden. Musste hier mal gucken. Da gibt es eine komplette Hirarchie an Klassen (im Delphi-Stil). Musste dir dann nur mal raussuchen. So wie es strukturiert ist, sollteste da keine großen Probleme haben, die zu finden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.