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.

In Klassen/Objekte eine Datei einfügen

Empfohlene Antworten

Hallo,

ich versuche mich an Klassen und Objekten in PHP und bin gleich auf ein Problem gestoßen! Damit ich nicht die Übersicht über die Funktionen und so verlieren möchte ich die Funktionen auf mehrere Dateien verteilen. Nur leider weiss ich nicht wie ich diese Dateien dann in die Klasse wieder mit einbinden kann!

Ich habe schon folgendes versucht:

class own_class {

include("function/function.php);

}[/PHP]

Nur das funktioniert nicht, es werden immer folgende Fehlermeldungen angezeigt:

[code]Parse error: parse error, unexpected T_ECHO, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in d:\web\website_v2\my_class\my_class.php on line 5 Fatal error: Cannot instantiate non-existent class: own_class in d:\web\website_v2\index.php on line 11[/code]

Ich hoffe mir kann einer helfen!

mfg

Mal eine andere Frage wieso sollte man Methoden die zu einer Klasse gehören in eine andere Datei auslagern? Das macht keinen sinn und das geht auch nicht denn die Methode gehört ja zur Klasse oder eben nicht. Wenn du Objektorientiert arbeiten möchtest dann muss die Methode auch in der Klasse stehen.

Du kannst das include soweit wie ich es weiß nur in den Methoden verwenden oder vor der Klasse wenn du Abhängigkeiten einbinden musst also z.B. eine Elternklasse.

include("function/function.php);

} [/PHP]

ich glaube da müsste dringend noch ein Anführungszeichen nach function.php gesetzt werden. Vielleicht löst sich der ParseError dann bereits in Luft auf.

@schiller

Das hat einen ganz einfach Grund!

Ich bin schon bei 500 Programmzeilen nur für die Klasse, und habe vll 20 % der Seite fertig! Das wird einfach zu unübersichtlich und deswegen möchte ich die Methoden auslagern, ich möchte aber in einer Klasse bleiben, deswegen auch keine Elternklassen.

@phadiax

Ja, hier im Forum hab ich es vergessen, aber auch richtig geschrieben funktioniert es nicht!

mfg

Ich bin schon bei 500 Programmzeilen nur für die Klasse, und habe vll 20 % der Seite fertig! Das wird einfach zu unübersichtlich und deswegen möchte ich die Methoden auslagern, ...

Also ich habe auch schon Klassen geschrieben die mehr als 1500 Zeilen Code hatten. Das mit der Übersichtlichkeit hängt sehr stark von der Entwicklungsumgebung ab. Alles was ich an Methoden nicht brauche wird bei mir entweder ausgeblendet oder ich springe direkt die entsprechende Methode an da können dann auch mehrere hundert Zeilen Code drüber stehen.

Ich kann mir nicht vorstellen das fünf includes in der Klasse der Übersichtlichkeit dienen. Auch macht es sonst keinen Sinn das Auszulagern, denn dann müssen die Dateien im System zur Laufzeit erst zusammengesucht werden.

@schiller

Ohne dich jetzt angreifen zu wollen, es mag dir vielleicht nicht gefallen, aber ich möchte halt die Methoden auslagern, Warum?, Wieso?, Weshalb? ist doch meine Sorge!

So und jetzt, gibt es eine Möglichkeit eine Datei in eine Klasse einzubinden??

mfg

Soweit wie ich es weiß gibt es keine Möglichkeit teile eine Klasse auszulagern. Denn in der Klasse können nur die Attribute und die Methoden stehen. Alles andere würde zu Fehlern führen. In den Methoden kann man dann eventuell wieder includes nutzen. Das habe ich jetzt noch nicht probiert sollte aber gehen.

Schonmal nachgedacht das ganze über Interfaches, Vererbung etc zu vereinfachen, bzw bestimmte funktionen in eigene Objekte auszlagern etc...

So wie ich das sehe, kennen PHP-Klassen nur inline-Funktionen. Also sind in einer Klasse nur Methoden und Attribute erlaubt.

Die einzige Möglichkeit die ich sehe, wäre diese:

(seeeehr abstrakt und ungetestet)


eval("class Foo {".implode("", file("functiondef.inc.php"))." }");
[/PHP]

Hoffentlich muss du bei solchen Konstrukten niemals nach Fehlern in deinen Scripten suchen... :-)

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.