php klassen programmierung

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • php klassen programmierung

    hi,

    mich würden gerne die laufzeiten interessieren.

    wie verhält es sich, wenn eine klasse 100 funktionen hat (bsp.), ich davon aber nur eine benötige?

    oder macht es dann eher sinn die klassen schlank zu halten und wenn man was dazu muss zu vererben?
    Gruß
    Uzu

    private Homepage

  • #2
    Miß nach!
    Meiner Erfahrung nach hat die Menge des inkludierten Codes ab einer bestimmten Größe durchaus Auswirkungen auf die Performance.
    Last edited by pekka; 24-06-2008, 12:53.

    Comment


    • #3
      Welche Klasse sollte denn einhundert Methoden beherbergen? Und wieso sollte sie das tun, wenn du nur eine davon "benötigst"? Entschuldige, aber ich finde die Fragestellung sehr unklar. Du kannst ja mal ein Beispiel für eine solche Klasse geben.
      Als kleinen Hinweis sei der Begriff God-Object genannt.

      Grüße
      Nieder mit der Camel Case-Konvention

      Comment


      • #4
        Solche Dinge solten entweder direkt als PHP-Extension eingebaut oder gar nicht benutzt werden...
        Wenn du nur 1 Funktion brachst kannst du sie ja wohl ganz gut selber nachbauen.
        Besser mehrere kleine Klassen als eine riesige.

        Comment


        • #5
          Original geschrieben von jmc
          Solche Dinge solten entweder direkt als PHP-Extension eingebaut oder gar nicht benutzt werden...
          Wenn du nur 1 Funktion brachst kannst du sie ja wohl ganz gut selber nachbauen.
          Besser mehrere kleine Klassen als eine riesige.
          DAMIT kann ich etwas anfangen.
          konnte ich aber auch nochmal auf wiki nachlesen, thx Griecherus

          und wie ich schon sagte .. das war ein beispiel mit den 100 funktionen .
          Gruß
          Uzu

          private Homepage

          Comment


          • #6
            hi leute,

            nochmal eine kleine frage.

            von java kenne ich es, das jede klasse in eine eigene datei kommt .. ist das bei php auch zu empfehlen oder kann man ruhig alle klassen in eine datei packen?

            was verhält sich dann schneller?? die große datei einzubinden (include) oder die vielen kleinen dateien?
            Gruß
            Uzu

            private Homepage

            Comment


            • #7
              Um Autoloading effektiv zu nutzen, ist es sinnvoll, Klassen eigene Dateien zu geben - entsprechend sollten Kindklassen, Abstrakte Klassen und Interfaces ebenfalls eigene Dateien bekommen.

              Darüberhinaus empfehle ich, beim einbinden von Programmbestandteilen auf require/require_once zurückzugreifen.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Comment


              • #8
                Original geschrieben von unset
                Um Autoloading effektiv zu nutzen, ist es sinnvoll, Klassen eigene Dateien zu geben - entsprechend sollten Kindklassen, Abstrakte Klassen und Interfaces ebenfalls eigene Dateien bekommen.

                Darüberhinaus empfehle ich, beim einbinden von Programmbestandteilen auf require/require_once zurückzugreifen.
                thx .. autoloading kannte ich nicht .. damit werde ich wohl meine include_classes.php wieder löschen können die diese aufgabe übernommen hatte

                mit dem require hast du schon recht .. sollte ich wohl mal mehr drauf achten
                Gruß
                Uzu

                private Homepage

                Comment


                • #9
                  die autoloader funktion habe ich hinbekommen

                  jetzt habe ich noch eine kleine frage zu den konstrucktoren.
                  bei peterkropff.de wird __construct verwendet .. von java kenne ich es das man erine funktion mit dem gleichen namen wie die klasse erzeugt.

                  welche der beiden varianten ist "zukunftssicherer"?

                  und kann ich in php den rückgabetyp bestimmen? der konstrucktor gibt mir immer ein objekt zurück, was ich aber nicht immer will
                  Gruß
                  Uzu

                  private Homepage

                  Comment


                  • #10
                    __construct ist aktuell. Klassenname ist veraltet - in PHP.

                    Außerdem gibt der Konstruktor nichts zurück, er ist nur die Aufbauroutine deiner Klasse. Folglich ist das nicht möglich.
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Comment


                    • #11
                      ich kann ja im konstruktor gleich eine funktion aufrufen lassen .. um mir einen zusätzlichen aufruf zu sparen .. aber dann bekomme ich nette fehlermeldungen

                      Code:
                      Catchable fatal error:
                      Object of class LoadConfig could not be converted to string in
                      /srv/www/htdocs/lokal/websites/cms/classes/Template.php on line 25
                      Gruß
                      Uzu

                      private Homepage

                      Comment


                      • #12
                        Was hast du dir da zusammenprogrammiert?
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Comment


                        • #13
                          der fehler hat folgende ursache:

                          PHP Code:
                          function site()
                          {
                             
                          $template_design = new Template($this->_theme_dir."template_design.html");
                             
                          $template_design->replace("theme_dir"$this->_theme_dir);
                             
                          $template_design->replace("title", new LoadConfig("title"));
                             
                          $template_design->replace("header", new LoadConfig("header"));
                             
                          $template_design->replace("navi"$this->navi());
                             
                          $template_design->replace("footer", new LoadConfig("footer"));
                             return 
                          $template_design->echo_template();

                          ich musste das folgendermasen umschreiben damit es endlich funktioniert

                          PHP Code:
                          function site()
                          {
                             
                          $title = new LoadConfig("title");
                             
                          $header = new LoadConfig("header");
                             
                          $footer = new LoadConfig("footer");
                             
                          $template_design = new Template($this->_theme_dir."template_design.html");
                             
                          $template_design->replace("theme_dir"$this->_theme_dir);
                             
                          $template_design->replace("title"$title->getData());
                             
                          $template_design->replace("header"$header->getData());
                             
                          $template_design->replace("navi"$this->navi());
                             
                          $template_design->replace("footer"$footer->getData());
                             return 
                          $template_design->echo_template();

                          finde ich ehrlich gesagt umständlich ... und mehr code.
                          oder gibts es eine möglichkeit die obere variante zum laufen zu bringen?

                          LoadConfig.php
                          PHP Code:
                          class LoadConfig
                          {
                             var 
                          $_field "";

                             function 
                          __construct($field)
                             {
                                
                          $this->_field $field;
                             }

                             function 
                          getData()
                             {
                                
                          $configdata = new Query("SELECT config_value FROM tbl_config WHERE config_name = '".$this->_field."';");
                                if(
                          $configdata->error())
                                {
                                   echo 
                          $configdata->getError();
                                   die();
                                }

                                
                          $row $configdata->fetch();
                                
                          $configdata->free();
                                unset(
                          $configdata);

                                return 
                          $row['config_value'];
                             }

                          Gruß
                          Uzu

                          private Homepage

                          Comment


                          • #14
                            Faktorisiere deine Klassen. Deklariere statische Klassen. Oder erlerne erst einmal objektorientierte Programmierung, bevor du etwas produktives umsetzen willst.

                            OffTopic:
                            Wie man nun sieht, hat erzwungene objektorinetierte Programmierung offensichtlich den Effekt, dass die Leute es nicht wirklich begreifen, aber auf Düvel komm russ anwenden wollen.
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Comment


                            • #15
                              Original geschrieben von unset
                              Faktorisiere deine Klassen. Deklariere statische Klassen. Oder erlerne erst einmal objektorientierte Programmierung, bevor du etwas produktives umsetzen willst.

                              OffTopic:
                              Wie man nun sieht, hat erzwungene objektorinetierte Programmierung offensichtlich den Effekt, dass die Leute es nicht wirklich begreifen, aber auf Düvel komm russ anwenden wollen.
                              wer sagte den dass das was produktives wird?

                              ich bastel einfach an einem kleinen cms für meine webseite .. wenns es am ende funkt .. super .. wenn nicht .. habe ich was zu tun.
                              ich kann OOP nicht wirklich .. deswegen will ich mich da jetzt ja ein wenig mit beschäftigen.

                              nur damit ich was RICHTIG lerne, muss ich ergebnisse sehen .. und den größten erfolg habe ich, wenn ich etwas "produktives" programmiere .. das ich auch einsätzen könnte.

                              Faktorisiere deine Klassen.
                              damit kann ich nichts anfangen .. und wenn ich eine SuMA damit quäle kommt was mathematisches bei rum (ausklammern)

                              Deklariere statische Klassen
                              damit ich den die variablen auch von außerhalb verändern kann?
                              Gruß
                              Uzu

                              private Homepage

                              Comment

                              Working...
                              X