Antworten
http://de3.php.net/autoload
2.
Interessante Funktion. Herzlichen Dank für den heißen Tipp. Leider kann ich diesen "noch nicht" umsetzen, da auf meinem Server noch irgend eine 4er Version von PHP läuft. Gibt's keine andere Lösung?
Gruß, Hannes
3.
doch, alle benötigten Klassen von Hand per Include einbinden.
Ich seh eh nicht ganz wo dein Problem liegt. Schau dir doch mal zb die Klassen des Zend Frameworks an, da werden bei jeder Klasse alle benötigten miteingebunden.
http://framework.zend.com
4.
Ich glaub, dass du mein Problem nicht ganz verstanden hast. Dabei hab ich's doch gut formuliert. Egal, noch einmal:
1) Ich habe mehrere Klassen
2) Jede Klasse befindet sich in einer separaten Datei (zB edit.class.php).
3) In vielen meiner Klassen gibt es Konstruktoren.
4) In vielen dieser Konstruktoren steht dasselbe geschrieben, zB:
Code: In Zwischenablage kopieren (nur IE)
Ich will nicht, dass ich in all diesen Klassen mit Hilfe von Copy/Paste den Konstruktor einfüge. Da steckt keine Dynamik dahinter. Es soll eine Datei geben, in der der Konstruktor nur 1x auf diese Art und Weise, wie's oben ersichtlich ist, geschrieben steht. Denn wenn ich diesen Konstruktor einmal ändere, dann will ich ihn nicht xx-Mal ändern müssen, sondern nur 1x.
Bitte daher um Hilfe. Hab's heute mit ein paar Include-Varianten probiert. Doch ich bekam immer die Meldung, dass "redeclare" nicht möglich ist!?! Mit autoload kann ich auch nicht arbeiten, da alles auf php4 basiert (lasst euch von __construct() nicht täuschen).
Gruß, h.
5.
Code: In Zwischenablage kopieren (nur IE)
Lesen:
http://www.php.net/manual/de/language.oop.php
http://www.php.net/manual/de/language.oop5.php
Nutze "parent::"
6.
Deshalb schrieb ich doch, dass du dich nicht täuschen lassen sollst. Mir ist auf die Schnelle nichts Besseres eingefallen. Danke für die Links, diese sind mir aber schon bekannt. Leider konnten die mein Problem auch nicht lösen. Wenn ich zB mit parent:: arbeite, dann kommt wieder eine Fehlermeldung, nämlich:
[05-Sep-2006 21:29:14] PHP Fatal error: Cannot redeclare class createtable in /xxx/createtable.class.php on line 3
Sobald ich innerhalb einer Methode was mit Include mach, gibt's diese Fehlermeldung.
Hinweis: Alle Klassen werden in einer Datei namens app.inc.php zusammengeführt (mit include).
7.
Noch etwas: Mich wundert's, dass noch keiner empfohlen hat, alle Klassen in eine Datei zu speichern. Dieser Gedanke ging mir auch schon durch den Kopf, aber irgendwie endet dass in einem kleinen Chaos (zu viele Klassen). Außerdem wird bei vielen Ausschreibungen für Programmen (C++,PHP ...) verlangt, jede Klasse in eine Datei zu speichern. Anscheinend ein Trend.
Gruß, h.
8.
Zitat:
Sobald ich innerhalb einer Methode was mit Include mach
Das ist auch meist überflüssig...
Code: In Zwischenablage kopieren (nur IE)
Code: In Zwischenablage kopieren (nur IE)
9.
Danke für den Tipp. Aber sobald ich irgend etwas mit "include" mach, kommt die in meinem vorletzten Posting erwähnte Fehlermeldung. Grund:
*) Klasse 1 ist in der Datei app.inc.php inkludiert.
*) Klasse 2, in der nun Klasse 1 auch inkludiert wird, ist ebenfalls in der Datei app.inc.php inkludiert.
Somit inkludiere ich die Klasse 1 zwei Mal, wahrscheinlich der Grund der Fehlermeldung. Warum ist das so?
--> Mit Extend will ich nicht arbeiten, da ich sonst x Methoden in einer Klasse haben, von denen ich y nicht brauch.
10.
Wenn das so ist, dann lagere ich den Konstruktor einfach in eine separate Datei aus, denn so wird dieser ja nur 1x inkludiert, und die Fehlermeldung verschwindet.
Hat jmd. eine bessere Idee?
11.
Okay, hab den Fehler gefunden. Das Problem lag bei "include". Meinem Compiler ist wohl das "_once" abgegangen.
12.
Sorry, aber mache dich bitte mit den Grundprinzipien der OOP vertraut...
Was du da vorhast, ist gelinde gesagt, Unsinn!
Ich kann dir nicht helfen....
:D Die Sprache, mit der du arbeitest heist PHP und nicht "WünschDirWas" :D