Bernd: Funktionen in eine Klasse inkludieren

Guten Tag.

Folgendes: Ich habe mehrere verschiedene Klassen, welche aber teilweise selbe Funktionen benötigen. Weil ich aber nun nicht jedesmal die ein und dieselbe Funktion in jede der Klassen reinschreiben wollte (Quelltext ist eh schon gross genug), würde ich gerne solche Funktionen auslagern und in der jeweiligen Klasse dann inkludieren.

Beispielfunktion in einer Datei namens "klassen_funktionen.php":

function funktion1($zahl) {
  return $this->foo + $zahl / $this->bar;
}

Anmerkung: Die Klassenvariablen $foo und $bar gibt es in jeder dieser Klassen...

Beispielklasse (wie ich mir das so gedacht hab):

class klasse1 {
    var $foo = 123;
    var $bar = 55;

include "klassen_funktionen.php";

function muh() {
      //mach was..
    }

function hallo($k) {
      return $this->funktion1($k);
    }
}

So, auch wenn das Beispiel hier recht unsinnig ist, aber ich hoffe man versteht was ich meine.
Jedenfalls so wie ich das nun hier bei klasse1 eingebaut habe, so funktioniert das nicht. Wie (wenn überhaupt) kann man sowas bewerkstelligen?

Danke.

  1. Hi!

    Jedenfalls so wie ich das nun hier bei klasse1 eingebaut habe, so funktioniert das nicht. Wie (wenn überhaupt) kann man sowas bewerkstelligen?

    Mich wundert dass das nicht geht, aber da gibt es ja sowieso bessere Methoden, versuchs doch mal mit Vererbung: http://www.php.net/manual/de/keyword.extends.php, wenn das ganze auch semantisch Sinn macht würde ich das auf alle Fälle so machen.

    Grüße
    Andreas

    1. Hi!

      Hallo

      Mich wundert dass das nicht geht, aber da gibt es ja sowieso bessere Methoden, versuchs doch mal mit Vererbung: http://www.php.net/manual/de/keyword.extends.php, wenn das ganze auch semantisch Sinn macht würde ich das auf alle Fälle so machen.

      Naja, konkret ist das so, dass ich ja in dieser gemeinsamen Funktion eine Variable $this->irgendwas benutze ..wobei sich aber eben das $this auf die jeweilige Klasse bezieht, in der die Funktion eingebunden sein soll.

      Moment.. ich glaub ich weiss wie das wohl gemweint ist..

      Beispiel:

      class common_funcs {
        function f1($x) {
           return $this->foo + $x;
        }
      }

      class haupt1 extends common_funcs {
        var $foo = 10;

      function foobar() {
          return f1(5);
        }
      }

      Die Funktion foobar() sollte dann ja in diesem Beispiel 15 zurückgeben. Zwar hab ichs nicht ausprobiert, aber scheint mir plausibel. BEdenken hab ich irgendwie nur bei $this->foo, aber das sollte ja dann den Wert haben wie in Klasse "haupt1" deklariert, unabhängig von "common_funcs"... Hab an Vererbung garnicht gedacht ..war so auf "include()" aus ..naja ..werd es mal ausprobieren. Danke für den Denkanstoss!

      Grüße
      Andreas

      Bernd

      1. Nachtrag:

        class haupt1 extends common_funcs {
          var $foo = 10;

        function foobar() {
            return f1(5);
          }
        }

        return $this->f1(5)  ..muss das natürlich heissen ..naja sodele :-)

        Bernd