Moin!
OK ich versuche es mal nochmal neu zu erklären, ich bin dabei eine erweiterung für eine boardsoftware zu erstellen, d.h. ich möchte in den orginaldateien nicht drinn rumfummeln bzw diese auch nicht kopieren und unter neuen namen mit anderen namen für die class speichern
Ist dein Vorhaben lizenztechnisch (du erwähntest, das das Board eine Lizenz hat, die offenbar nicht ganz so frei ist) überhaupt einwandfrei durchführbar? Das wäre mal an erster Stelle zu klären.
Und zweitens: Nein, eine einmal definierte Klasse kann man nicht löschen, weil es absolut unsinnig wäre, sowas zu ermöglichen. Wenn eine Klasse nicht existieren soll, dann bindet man deren Definition einfach nicht ein.
Ausführlich formuliert: Entweder baust du deine Erweiterungen des Boards direkt in den existierenden Originalcode ein. Dann tut die fragliche Klasse hinterher das, was von Original her vorgesehen war, plus das, was du geändert/hinzugefügt hast.
Oder du programmierst ausschließlich Erweiterungen außerhalb des existierenden Codes. Das bedeutet dann, dass du damit leben mußt, dich auch namensmäßig von allen existierenden Funktionen und Klassen fernzuhalten, weil diese schon vom Original benutzt werden. Es wäre programmtechnisch äußerst fragwürdig, wenn du die Klassen namensmäßig mischen würdest, weil man dann nicht mehr klar erkennen kann, welche Version der Klasse denn tatsächlich benutzt wird. Es kann also passieren, dass eine Originalkomponente gewöhnlich mit der Originalklasse arbeitet, und plötzlich deine Eigenbauklasse bekommt - und dann heftig Fehler auswirft, weil du nicht alle Methoden und Eigenschaften der Originalklasse implementiert hast.
Da du am Original ja nichts ändern willst, sollte es eigentlich kein Problem sein, einfach die existierenden Klassen des Originals zu erweitern - da ja auch nur deine neu hinzugefügten Module auf deine neuen Klassen zugreifen werden - am Original wolltest du ja nichts ändern.
Das Board hat eine global.php welche die wichtigen Funktionen wie sessions usw handelt, nun möchte ich boardweit z.b. die User anzeigen die online sind, dazu benötige ich die class dafür welche in einer anderen datei ist.
diese binde ich per require ein, soweit sogut, nur auf der index.php gibt es diese funktion bereits orginal und dort wird auch diese externe class eingebunden was dann halt zu einem fehler führt
mein anliegen ist es jetzt in meiner datei die zur erweiterung der global.php dient nachdem ich per require die class eingebunden habe die claa wieder zu resetten denn sonst kommt der fehler.
Geht nicht. Weil dein Vorgehen falsch ist.
include ('global.php'); (included 'classes.php' mit class 'klasse')
include ('deineklasse.php'); (implementiert class 'klasse' mit anderer Definition)
Sowas funktioniert nicht. Kann nicht funktionieren. Weil du ja nach erst nach der Einbindung von deineklasse.php programmtechnisch loslegst. Aber alle Einbindungen aus global.php, classes.php und deineklasse.php dann aktiv sein müssen, alle definierten Variablen, alle fefinierten Funktionen, alle definierten Klassen.
Angenommen, es gäbe eine Möglichkeit, die Klassendefinition zu löschen. Dann würde global.php sich auf die existierende Klasse aus classes.php verlassen - die ist aber gelöscht und durch die aus deineklasse.php ersetzt worden. Wenn du aber in deiner Klasse nicht alle benutzten Methoden und Eigenschaften anbietest, gibts Fehler.
Deshalb: Da ja sowieso nur die von dir geschriebenen Komponenten deine neuen Klassenmethoden benutzen können (das Original verläßt sich auf die Originalklasse, in der du nichts verändern wolltest), erweitere doch einfach die Originalklasse, sofern du es benötigst, und arbeite dann mit einem eigenen Klassennamen.
- Sven Rautenberg