[PHP]Funktionen Einbinden?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [PHP]Funktionen Einbinden?

      Moin Leute. Also, ich hab folgende Situation: eine Session datei mit verschiedenen Funktionen und Variablen. Da die Datei allerdings ziemlich groß geworden ist würde ich die gerne bisschen aufräumen und deshalb die Frage ob man diese ganzen Funktionen in einzelne Datein in einem Unterverzeichnis Speichern und mit Include wieder Einbinden kann?

      Das ganze ist in oop geschrieben und die Funktionen sind natürlich in einer Klasse, bin jetzt nicht so der überprogrammierer und hab mir da was zusammengebastelt und bevor ich jetzt alles umräume hoffe ich einfach mal das mir grad wer ne Antwort darauf geben kann.
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Also ich hab ne session.php die ich in die nötigen anderen Datein Einbinde. In dieser befindet sich etwa diese struktur:

      Quellcode

      1. class session{
      2. function Session{
      3. $inderselbendatei->startSession();
      4. }
      5. function startSession{
      6. session_start();
      7. }
      8. function a {
      9. blabla
      10. }
      11. function b {
      12. blablabla
      13. }
      14. function usw {
      15. usw
      16. }
      17. }
      Alles anzeigen


      Dazu gehören natürlich noch diverse Form und Datenbank datein, aber mir gehts ja um die Einbindung in extrenen Datein gespeicherten Funktionen. In diesem Beispiel die Funktionen 'a', 'b' und 'usw'.

      Groß ist sie um die 600 Zeilen, aber da es noch viele mehr werden wollte ich das mit dem Organisieren jetzt schon mal erledigen bevor es richtig viel Arbeit wird.
    • Es ist an sich der Klasse doch völlig egal ob du 100 Zeilen hast oder 2000. Viel mehr solltest du einfach vermeiden Code an diversen Stellen doppelt zuschreiben. Ob du einen merklichen Performance Verlust zwischen 6000 Zeilen Code oder 5x include/require hast, mag ich an dieser Stelle zu bezweifeln

      Aber poste doch einfach mal deine gesamte Klasse, dann könnte man dir weitaus mehr helfen.

      Denn vielleicht ist deine Klasse ja kürzbar in diversen Punkten. Aber alles in allem ist es in meinen Augen völlig egal ob 100 oder 1000 Zeilen Code.

      Lieben Gruß
    • Ich kann die Klasse nicht Posten, das muss auch so gehen, weils im Grunde etwas Allgemeines ist. ^^

      Klar habe ich eine andere Datei mit Klasse für die Datenbank Funktionen. Klar habe ich eine andere Datei für die Formulare. Mit Form meinte ich eine selbstbestimmte Form um das ganze einfacher zu Programmieren, aber wenn ich jetzt darauf eingehe kann ich gleichn Tutorial über meine Dateistruktur schreiben. :P

      Ich bin wirklich froh das ihr mir helfen wollt aber ich brauche im Grunde nur eine Antwort auf die Frage: Wie binde ich den Code von in externen Datein befindliche Funktionen in eine Klasse ein?

      Und wenn man das so nicht versteht dann hier mal ein ganz anderer Ansatz: Wenn ich Include verwende, wird dann beim abarbeiten der Datei im Browser der Include Befehl durch den Code ersetzt auf den sich das Include bezieht, oder muss ich eine Funktion erstellen in der sich ein Include mit verweis auf den Inhalt der Funktion befindet?
    • PHP: include - Manual

      Was ich immer nie verstehen kann, alle wollen hilfe aber keine postet seinen Code. Warum eigentlich? Habt ihr angst das den jemand klaut? Oder schreibt ihr an so geheimen Staatsdateien das die keiner sehen darf und ihr mit eurem Leben bezahlen müsst wenn auch nur 1 Zeile davon public wird?

      Man man man so ein Kindergarten.....

      Ich könnte dir noch mehr sachen um die Ohren hauen welche dir bei deinem Problem vielleicht helfen könnten, aber ich denke das macht keinen Sinn bei solch einem geheimen Projekt.... /ironieoff
    • Warum konkreten Code posten wenns nicht nötig ist? Ich hab ne Idee und setze sie um, sollte etwas daraus werden wärs fürn Arsch wenn der ganze Code public wär.

      PHP Manual hab ich schon geguckt allerdings wird meine Frage dort nicht konkret genug beantwortet. Bevor wir hier jetzt noch paar Stunden rum Diskutieren nehm ich mir die Zeit und probier die Möglichkeiten durch. Trotz allem danke fürs Mitdenken.
    • Assoult;320841 schrieb:

      Warum konkreten Code posten wenns nicht nötig ist? Ich hab ne Idee und setze sie um, sollte etwas daraus werden wärs fürn Arsch wenn der ganze Code public wär.


      Wegen einer Klasse? Und dann auch noch ne Session Klasse? Oh man du musst auch denken das bei dir hinten nur Goldbarren rauskommen oder?
    • Ich bin wirklich froh das ihr mir helfen wollt aber ich brauche im Grunde nur eine Antwort auf die Frage: Wie binde ich den Code von in externen Datein befindliche Funktionen in eine Klasse ein?

      Ok, dann: Keine Ahnung ob das geht, es ist aber auch ein falscher Weg, um für eine bessere Struktur zu sorgen (bzw. mehr Übersicht). Es ist IMHO unüblich, unnötig und hässlich.

      (Halt, warte: Schau dir mal Traits an. Damit sollte es gehen. Ist aber trotzdem hässlich und falsch)
    • Wegen einer Klasse? Und dann auch noch ne Session Klasse? Oh man du musst auch denken das bei dir hinten nur Goldbarren rauskommen oder?

      Du hast doch keine Ahnung was sich aus der Klasse für Informationen und Rückschlüsse auf andere Dateistrukturen schließen lassen. Hab oft genug Goldbarren geschissen, und selbst wenn das ganze nichts wird geh ich lieber auf Nummer sicher. Keine Ahnung warum du dich so drauf aufhängst. Wenn du deine Codes posten willst -> mach es, aber mach mich nich an. Und jetzt sei nicht beleidigt weil du nicht helfen konntest, kannst ja nich alles wissen. Ende.

      Ok, dann: Keine Ahnung ob das geht, es ist aber auch ein falscher Weg, um für eine bessere Struktur zu sorgen (bzw. mehr Übersicht). Es ist IMHO unüblich, unnötig und hässlich.

      (Halt, warte: Schau dir mal Traits an. Damit sollte es gehen. Ist aber trotzdem hässlich und falsch)


      Das ganze muss so ja nicht hochgeladen werden, wenn du eine bessere Lösung hast wär ich sehr froh.
    • Assoult;320845 schrieb:

      Du hast doch keine Ahnung was sich aus der Klasse für Informationen und Rückschlüsse auf andere Dateistrukturen schließen lassen. Hab oft genug Goldbarren geschissen, und selbst wenn das ganze nichts wird geh ich lieber auf Nummer sicher. Keine Ahnung warum du dich so drauf aufhängst. Wenn du deine Codes posten willst -> mach es, aber mach mich nich an. Und jetzt sei nicht beleidigt weil du nicht helfen konntest, kannst ja nich alles wissen. Ende.


      Was heißt nicht helfen konnte, ich kann dir ganz sicher helfen. Denn das was du machen willst ist das 1x1 in PHP.
      Benutze doch einfach die mit PHP 5.3 eingeführten Namespaces.

      Dann musst du dir nur noch einen Autoloader basteln der auf diese Namespaces reagiert und dir deinen Klassen nachlädt. Und schon haste eine saubere Trennung so wie gewünscht.

      Beispiel extra für dich:

      PHP-Quellcode

      1. <?php
      2. namespace System; // Namespace wird auf System gesetzt. Vorzugsweiße ist diese Datei dann im Ordner System zu finden
      3. use AndereKlasse, // Da sich diese Klassen ebenfalls im System Namespace befinden, brauchen diese nicht mit dem gesamten Namespace aufgerufen werden
      4. nochEineAndereKlasse;
      5. class Session {
      6. private $andereKlasse;
      7. private $nochEineAndereKlasse;
      8. /**
      9. * Zuweisung einer Klasseninstanz zu einer Variablen
      10. */
      11. public function __construct()
      12. {
      13. $this->andereKlasse = new AndereKlasse;
      14. $this->nochEineAndereKlasse = new nochEineAndereKlasse;
      15. }
      16. /**
      17. * Aufruf einer Methode aus der andereKlasse Instanz
      18. */
      19. public function whatEver()
      20. {
      21. $var = $this->andereKlasse->function();
      22. }
      23. /**
      24. * Aufruf einer Methode aus der nochEineAndereKlasse Instanz
      25. */
      26. public function hollaDieHopSaSa()
      27. {
      28. $var = $this->nochEineAndereKlasse->function();
      29. }
      30. /**
      31. * Das Ganze würde auch mit Statischen Methoden funktionieren, dann brauchst du keine Instanz der Klasse erstellen
      32. */
      33. public function test()
      34. {
      35. return AndereKlasse::statischeFunktion();
      36. }
      37. }
      Alles anzeigen


      So und wenn du noch mal behauptest ich könnte dir nicht helfen, weil ich es nicht weiß. Dann solltest du einfach mal überlegen ob man dir überhaupt helfen will. Denn wie gesagt du bist ein wenig arrogant und eingebildet. Schimpfst dich selber als Anfänger, aber denkst dein Code den du da geschrieben hast, wäre Goldwert.

      Ich lass dich einfach in den glauben. Und solltest du das von mir gepostete Beispiel nicht verstehen, dann tut es mir leid.

      In meinem Beispiel fehlt der Autoloader welchen du noch schreiben musst damit er die existens der Namespaces registriert. Ich würde dir ja gerne meinen Posten, aber ich denke der ist so unendlich viel wert das ich das nicht mit meinem Gewissen vereinbaren kann wenn der public ist /ironieoff

      In diesem Sinne
    • @ulli Ich ignorier jetzt mal gepflegt den großteil des unteren Abschnitts.
      Schimpfst dich selber als Anfänger, aber denkst dein Code den du da geschrieben hast, wäre Goldwert.

      Es geht nicht darum das der Code, sondern die Idee Goldwert sein könnte.

      Mein Problem habe ich wie geschrieben schon durch rumtesterei gelöst, aber für den neuen Ansatz bekommste nochn Thanks und dann kannste das Thema hoffentlich ma für dich abhacken.

      Achja und dein Ironieoff ist als würdest dun Witz erklären..
    • Delinquenz;320853 schrieb:

      Ich würde das Problem an der Wurzel anfassen. Wieso ist die Klasse denn so groß? Vielleicht liegt da ja auch ein Designfehler vor. Ansonsten: Bei jedem guten Editor kann man Funktionen verkleinern, so dass nur der Funktionsheader zu sehen ist.

      Exakt. Das vermutet ulle (wenn ich ihn richtig verstanden habe) und ich auch - ohne den Quelltext der Klasse zu sehen, können wir hierzu aber keine richtige Hilfe anbieten.

      Das ganze muss so ja nicht hochgeladen werden, wenn du eine bessere Lösung hast wär ich sehr froh.

      Eine bessere Lösung - wenn überhaupt nötig (600 Zeilen sind nicht zu viel ... Nach Oracles Style Guide für Code sind bis zu 2 000 Zeilen ok, viele Java Klassen größerer Projekte haben bis zu 5 000 Zeilen) - eben nur mit Quelltext nötig (da, wie Ulle und Delinquenz beschrieben haben, der dann im Design liegt).
    • Nochmal Assoult, es geht um deine Session Klasse nicht um das Projekt. Was soll an der Session Klasse goldwert sein?

      Das ist halt das was ich nicht verstehe. Und das mit dem Ironieoff ist so gewollt das es wie ein witz klingt, denn das was du hier veranstaltest kann man nicht anders bezeichnen......

      Wie gesagt hättest du einfach die Session Klasse hochgeladen, dann hätte man dir in einem Post helfen können. So sind es eben effektive 4 gute Posts und der Rest ist Spam (auch von mir).

      Hat der Ansatz den ich dir geschrieben habe etwas gebracht oder brauchst du noch ein krasseres Beispiel?
    • Assoult;320854 schrieb:

      @ulli Ich ignorier jetzt mal gepflegt den großteil des unteren Abschnitts.

      Es geht nicht darum das der Code, sondern die Idee Goldwert sein könnte.

      Mein Problem habe ich wie geschrieben schon durch rumtesterei gelöst, aber für den neuen Ansatz bekommste nochn Thanks und dann kannste das Thema hoffentlich ma für dich abhacken.

      Achja und dein Ironieoff ist als würdest dun Witz erklären..


      Also die Idee von einer Session Klasse hatten aber schon andere
      google.de/search?q=php+session+class