Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP] OOP - Klasse in eigene Datei... aber wie?

Empfohlene Antworten

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() ... :(

Schon mal mit require_once() oder include() probiert?

Ja.... leider :(

objekt1 = new MeineKlasse();
Versuche es einmal so
objekt1 = new MeineKlasse;

Gruessle

bio*

Ja.... leider :(

das muss so gehen....

hast du vielleicht das "<?php" oder "'?>" in den include file vergessen?

Stimmt der pfad zum include?

Gruß,

Markus

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 :))))

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

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... :)

(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.

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.

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

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.

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.