Malcolm Beck´s: Noch eine frage zu einer kleinen Klasse

Beitrag lesen

hi,

Der Rückgabewert von new ist (in aktuellen PHP-Versionen) immer das neue Objekt. Du kannst der Klasse einen Konstruktor spendieren, wenn du Initialisierungsarbeiten hast, die bei der Instantiierung ausgeführt werden sollen. Der kann aber nichts zurückgeben, weil er automatisch beim new aufgerufen wird, was ja aber schon das Objekt selbst zurückgibt. Deshalb ist ein return im Konstruktor wie ein Leben ohne Mops (möglich, aber sinnlos).

Ahh, jetzt hab ich's ;)    zwar noch nicht so richtig verstanden, aber die Klasse funktioniert schon mal.

new erzeugt ein Objekt. Das ist dann sinnvoll, wenn du Daten im Objekt speichern willst und die Funktionen (Methoden) darauf zugreifen sollen.

Ich hab mir gerade noch ein Paar Zeilen im ZF angesehen; jetzt habe ich erst verstanden, was da passiert. Ich dachte die ganze Zeit, die ganzen Funktionen in den Zend-Klassen wären eigenständige Funktionen, die im gesamten Script-Verlauf genutzt werden können, dabei sind es ja „Klassen-Interne Funktionen“, auf die nur innerhalb der Klasse zugegriffen wird (so habe ich es jetzt verstanden, ist meine vermutung richtig?).

Sollen die Methoden jedoch als eigenständige Funktionen sein und benötigen keinen Zugriff auf $this, könnten also auch ohne eine Klasse existieren, dann willst du vielleicht statische Methoden schreiben.

Ja, genau sowas habe ich gesucht, Danke für den Link!

Eine Klasse nur mit statischen Methoden und Eigenschaften nimmt man aber eigentlich nur dann, wenn man die Klasse als Namensraum "missbrauchen" möchte.

Um dem missbrauch vorzubeugen habe ich auch einen Konstruktor in die Klasse eingebaut ;)
Nein, ich verstehe einfach die OOP-Logik nicht so richtig und versuche einfach mal mit tests hier und da hinter dass Geheimnis zu kommen.

So sieht nun die Klasse aus:

class Menu  
{  
    function __construct($Title)  
    {  
        $this->liste = "<p>$Title</p>";  
    }  
  
    public static function Level_1()  
    {  
      return "test level 1";  
    }  
  
    public static function Level_2()  
    {  
      return "test level 2";  
    }  
}  
  
  // Zugriff auf das Objekt[?]  
  $MyList = new Menu('Mein Titel');  
  echo $MyList->liste; // Ausgabe: <p>Mein Titel</p>  
  
  // Zugriff auf die einzelnen Methoden[?]  
  echo Menu::Level_1(); // Ausgabe: test level 1  
  
  echo Menu::Level_2(); // Ausgabe: test level 2  

mfg
[?] so richtig Formuliert?

--
echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
array(2) {
  ["SELFCODE"]=>
  string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
  ["Meaningful"]=>
  string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
}