NiX: $_POST in Klassen

Hallo zusammen.

Ich mache meine Anfänge im programmieren mit OOP und habe nun eine Frage.
In einer Methode einer Klasse benötige ich ein paar Variablen, die via $_POST kommen.
Ich will diese nicht mit $var = new methode ("name1","name2",....) oder sonstwie übergeben sondern in der Methode selbst auf die $_POST zugreiffen können, weil es relativ viele Varible sind und ich mit diesen Post ein Template ausfüllen lassen möchte.

Kann mir jemand sagen wie ich auf die $_POST zugreiffen kann?
global $_POST; hat nochts genutzt, auch public $_POST half nichts.

Viele Grüsse,
NiX

  1. Moin!

    In einer Methode einer Klasse benötige ich ein paar Variablen, die via $_POST kommen.
    Ich will diese nicht mit $var = new methode ("name1","name2",....) oder sonstwie übergeben sondern in der Methode selbst auf die $_POST zugreiffen können, weil es relativ viele Varible sind und ich mit diesen Post ein Template ausfüllen lassen möchte.

    Dann übergib doch das ganze Array der Klasse. Dafür sind Arrays doch da.

    Kann mir jemand sagen wie ich auf die $_POST zugreiffen kann?
    global $_POST; hat nochts genutzt, auch public $_POST half nichts.

    $_POST ist eine der superglobalen Variablen, die überall automatisch zur Verfügung stehen (sollen). Du mußt also im Prinzip nichts tun, und einfach nur $_POST nutzen. Ich rate davon allerdings ab, weil du damit gegen gute Programmierprinzipien verstößt, denn globale Variablen sind böse - auch in OOP, oder GERADE IN OOP.

    Denn was ist, wenn du irgendwann nicht $_POST, sondern stattdessen $_GET zur Aufgabenerfüllung nutzten willst? Dann schreibst du deine gesamte Klasse neu? Kopierst vorher $_GET in $_POST? Alles eklig. Lieber die Variable mit den Daten als Parameter in die Klasse reingeben.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hi Sven

      $_POST ist eine der superglobalen Variablen, die überall automatisch zur Verfügung stehen (sollen). Du mußt also im Prinzip nichts tun, und einfach nur $_POST nutzen. Ich rate davon allerdings ab, weil du damit gegen gute Programmierprinzipien verstößt, denn globale Variablen sind böse - auch in OOP, oder GERADE IN OOP.

      Denn was ist, wenn du irgendwann nicht $_POST, sondern stattdessen $_GET zur Aufgabenerfüllung nutzten willst? Dann schreibst du deine gesamte Klasse neu? Kopierst vorher $_GET in $_POST? Alles eklig. Lieber die Variable mit den Daten als Parameter in die Klasse reingeben.

      Danke für den Tipp.
      Ich werde wirklich Variablen aus diesen GET/POSTs machen, obwohl es auf den ersten Blick unübersichtlicher aussieht.
      Wieso es nicht funktioniert hatte? Weil ich genau diese beiden Variablen verwechselt hatte...

      Gruss,
      Erich

      1. echo $begrüßung;

        Ich werde wirklich Variablen aus diesen GET/POSTs machen, obwohl es auf den ersten Blick unübersichtlicher aussieht.

        Das ist es nicht, was Sven meinte, denn das wäre unnötige Umkopiererei. Seine Empfehlung war, der Methode einen Parameter zu spendieren, der ein Array entgegennehmen soll,

        class foo{  
          function bar(array $data) {  
            print_r($data);  
          }  
        }
        

        und beim Aufruf entweder $_POST oder $_GET oder auch ein anderes Array (z.B. mit vorgefilterten Werten - ab PHP 5.2) zu übergeben.

        $foo = new foo();  
        $foo->bar($_POST);
        

        echo "$verabschiedung $name";