Array oder Klasse ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array oder Klasse ?

    Hi.
    Ich bin grad dabei ne Seite zu basteln. Ich bin nur momentan am überlegen, ob ich z.B. für die Konfiguration lieber ein assoziatives Array oder eine Klasse mit nur Variablen verwende.

    Eine Klasse hätte den Vorteil, dass ich nicht diese Tastatur-Verrenkungen für [' und '] machen muss, sondern bequem -> tippen kann.

    Gibt es irgendwelche "sinnvollen" Argumente, warum die eine oder die andere Lösung besser ist ?
    hopka.net!

  • #2
    Also ich halte ne Klasse für ziemlich hoch gegriffen.

    Lasse mich aber gerne mit "richtigen" Pro-Argumenten belehren-

    Kommentar


    • #3
      ich würde auch ein array nehmen.

      wenn man es richtig über eine class macht, sollte da ja auch ein array liegen. und viel setvalue() getvalue() kann auf diese werte zugegriffen werden.

      ein asso-array ist daher als besser für deinen zweck einzustufen als ein class, zumal du nur config-daten ablegen willst.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        ich hatte mir das so gedacht:
        PHP-Code:
        CLASS config
        {
          VAR 
        $root_path "/page";
          VAR 
        $session_name "sid";
        }
        $cfg = NEW config;
        echo 
        $cfg->root_path;

        // oder als Alternative:

        $cfg = Array();
        $cfg['root_path'] = "/page";
        $cfg['session_name'] = "sid";
        echo 
        $cfg['root_path']; 
        Also ich halte ne Klasse für ziemlich hoch gegriffen.
        was meinst du mit "hoch gegriffen" ?

        setvalue und getvalue brauch ich nicht, weil man kann ja auch direkt auf die Vars zugreifen.
        hopka.net!

        Kommentar


        • #5
          Perlen vor sie Säue,
          Mit Kanonen auf Spatzen geschossen,
          ...

          Also ich würde nicht direkt auf Variablen einer Klasse von außerhalb zugreifen. Warum auch. Conf-Vars kann ich gut in nem normalen Array speichern.

          Kommentar


          • #6
            Original geschrieben von Hopka
            was meinst du mit "hoch gegriffen" ?
            naja. er meint eher, dass man keine class für so eine einfache angelegenheit benötigt, um vars zu speichern..... (denke ich )

            Original geschrieben von Hopka
            setvalue und getvalue brauch ich nicht, weil man kann ja auch direkt auf die Vars zugreifen.
            doch. mit get- und setvalue bist du nicht fix auf die vars in der class angewiesen. du kannst zu laufzeiten deines scripts weitere werte in die class schreiben und auch auslesen.
            OHNE die class zu editieren. das sollte man nämlich eben nicht machen
            eine class ist ein abgeschlossenes projekt und fertig.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Original geschrieben von Abraxax
              doch. mit get- und setvalue bist du nicht fix auf die vars in der class angewiesen. du kannst zu laufzeiten deines scripts weitere werte in die class schreiben und auch auslesen.
              hmm, aber ich muss doch wenn ich die Klasse schreibe festlegen, welche Variablen existieren, oder kann ich wärend der laufzeit neue dazubauen?
              hopka.net!

              Kommentar


              • #8
                kannst du nicht, aber wenn du bspw. ne variable $connectiondata hast und dir irgendwann der name zu lang wird oder weiß der geier was, dann musst du in jedem projekt jedes vorkommen von $klasse->connectiondata ersetzen

                andererseits brauchst du in der funktion getvalue nur folgendes machen
                PHP-Code:
                function getvalue($value)
                {
                  if (
                strtolower($value)=='connectiondata')
                     
                $value='dbconnect';
                  return (isset(
                $this->$$value)) ? $this->$$value NULL;

                und deine projekte laufen sowohl mit dem alten als auch mit dem neuen wert
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  oder aber, du lässt die daten in dein asso-array schreiben....


                  PHP-Code:
                          function setvalue($var$val)
                          {
                              
                  $this->_ctrl[$var] = $val;
                          }


                          function 
                  getvalue($var)
                          {
                              if (isset(
                  $this->_ctrl[$var])) return $this->_ctrl[$var];
                              return 
                  false;
                          } 
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Es geht mir ja eigentlich nur darum, Tipparbeit zu sparen. Deswegen fällt setvalue und getvalue schonmal raus.
                    Aber außer ästhetischen Gründen schein sonst wohl nix gegen eine Klasse zu sprechen, oder (ich dachte vielleicht an Gründe der Performance oder Speicherauslastung)?
                    hopka.net!

                    Kommentar


                    • #11
                      DOCH! Es spricht dagegen, dass man nicht direkt auf Variablen einer Klasse zugreift. Dafür sind Funktionen da!!!

                      Kommentar


                      • #12
                        und das ist meiner Meinung nach ein ästethischer Grund.
                        Damit mein ich alles wie "das macht man normalerweise nicht so", "das ist unschön das so zu machen", "das ist unsauber, das so zumachen" oder "das macht man meistens anders"
                        hopka.net!

                        Kommentar


                        • #13
                          "Unsauber" ist mit sicherheit kein ästethischer Grund!!!

                          und auch die Tatsache, dass man Klassen nicht während der Laufzeit verändert, solltest du hinnehmen. Wenn du später mal ne Klasse sinngemäß einsetzt, wird dir sicher auch das begreiflich...

                          Und überhaupt. Du willst dir Tipparbeit ersparen? Dann hättest du einfach diesen Thread weglassen können

                          Aber mal ehrlich! Es ist wohl möglich mal kurz mit Daumen und Mittelfinger ein [ bzw ] zu drücken. Oder sind deine Finger so kurz, dass du dafür zwei brauchst?

                          Kommentar


                          • #14
                            Original geschrieben von TobiaZ
                            Aber mal ehrlich! Es ist wohl möglich mal kurz mit Daumen und Mittelfinger ein [ bzw ] zu drücken. Oder sind deine Finger so kurz, dass du dafür zwei brauchst?
                            Also ich weiß ja nicht wie deine Hände bzw. Finger aussehen, aber bei mir sind Daumen und Zeigefinger zwei Finger

                            Aber OK, nehm ich halt ein Array. Der tiefere Sinn von Klasse hat sich mir tatsächlich noch nicht eröffnet, für mich sind sie nur eine Ansammlung von Funktionen, aber vielleicht werde ich mit der Zeit etwas mehr begreifen, wozu die Dinger eigentlich gut sind. In C++ kann man damit lustige Sachen wie Listen und Stacks und sowas bauen, aber wirklich brauchen tut man die glaub ich nur bei ganz komplizierten Scripten.
                            hopka.net!

                            Kommentar


                            • #15
                              du solltest sogar generell klassen verwenden. auch wenn diese php-intern selber nur arrays sind und keine 'richtigen' objekte beim instanzieren erzeugt werden.

                              mit den verrenkungen: kannst auch die tastatur auf engl. umstellen. kann sein, dass die dann bequemer zu erreichen sind (ist jedenfalls bei '{' und '}' der fall)

                              Kommentar

                              Lädt...
                              X