3. März 200520 j 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() ...
3. März 200520 j objekt1 = new MeineKlasse(); Versuche es einmal so objekt1 = new MeineKlasse; Gruessle bio*
3. März 200520 j Ja.... leider das muss so gehen.... hast du vielleicht das "<?php" oder "'?>" in den include file vergessen? Stimmt der pfad zum include? Gruß, Markus
3. März 200520 j 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 )))
3. März 200520 j 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
3. März 200520 j 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.
3. März 200520 j 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...
3. März 200520 j (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.
3. März 200520 j 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.
3. März 200520 j 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
4. März 200520 j 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.
4. März 200520 j 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
5. März 200520 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.