tallman Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
phadiax Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tallman Geschrieben 10. Dezember 2005 Autor Teilen Geschrieben 10. Dezember 2005 @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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
phadiax Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 Ich habs jetzt nicht komplett gelesen, aber möglicherweise hilft dir das hier: http://de.php.net/manual/de/function.runkit-import.php Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tallman Geschrieben 10. Dezember 2005 Autor Teilen Geschrieben 10. Dezember 2005 @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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 Schonmal nachgedacht das ganze über Interfaches, Vererbung etc zu vereinfachen, bzw bestimmte funktionen in eigene Objekte auszlagern etc... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 10. Dezember 2005 Teilen Geschrieben 10. Dezember 2005 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 11. Dezember 2005 Teilen Geschrieben 11. Dezember 2005 Hoffentlich muss du bei solchen Konstrukten niemals nach Fehlern in deinen Scripten suchen... :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.