Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalt / Ergebnis einer Methode in einer anderen Methode verwenden / ausführen

Einklappen

Neue Werbung 2019

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

  • Inhalt / Ergebnis einer Methode in einer anderen Methode verwenden / ausführen

    Hallo Leute,

    ich hoffe mal der Titel ist nicht zu verwirrend gewählt.

    Also ich bin dabei mir aus Lernzwecken etc. eine kleine Graphenklasse zu schreiben. So nun meine Frage.

    Hier mal eine kleines Codebeispiel

    PHP-Code:
    /*
        *
        *    create image
        *
        */
        
    private function createImage(){
            
            
    imagecreate($this->getGraphWidth(), $this->getGraphHeight());
        }


    public function 
    createGraph(){

           
    $this->createImage();

    Die Mthode imageCreate brauche ich dann in einer anderen wo imagecolorallocate abgearbeitet wird. Wenn ich das so lasse dann bekomme ich eine PHP Fehlermeldung das in der jeweiligen Methode wo ich die einsetze ein Paramter fehlt, also da wo dann imagecolorallocate zu Einsatz kommt. Mache ich ein

    PHP-Code:
    private function createImage(){
            
            return 
    imagecreate($this->getGraphWidth(),  $this->getGraphHeight());
        } 
    dann kommt nur die Ausage das Bild kann nicht angezeigt werden, weil es Feher enthält.

    Meine Frage wie kann ich eine Methode die Code ausführt, in anderen Methoden einsetzen ohne das ich einen Rückgabewert mittels return zurück gebe?

    Ich hoffe ich habe mich klar ausdrücken können, danke für eure Antworten. Mfg litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de


  • #2
    Meine Frage wie kann ich eine Methode die Code ausführt, in anderen Methoden einsetzen ohne das ich einen Rückgabewert mittels return zurück gebe?
    ??
    Welchen Sinn sollte es haben, eine Funktion auszuführen, ohne den Rückgabewert irgendwie auszuwerten?
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Gute Frage hat nicht wicrklich Sinn.

      Meine Frage rührt daher weil das hier.

      PHP-Code:
      /*
          *
          *    create image
          *
          */
          
      private function createImage(){
              
              return 
      imagecreate($this->getGraphWidth(), $this->getGraphHeight());
          }

          
      /*
          *
          *    create allowcate
          *
          */
          
      private function createImage(){
              
             return 
      imagecolorallocate($this->createImage(), $this->bcColorArr[0], $this->bcColorArr[1], $this->bcColorArr[2]);
          } 
      nicht funktioniert. Oder ist das allgemein Quatsch was ich da mache und wäre der Weg wie ich ihn jetzt gehe und der auch funktioniert richtig.

      Das funktioniert
      PHP-Code:
      public function createGraph(){
          
              
      $this->bcColorArr $this->rgbWertBgColor();
              
              
      $image imagecreate($this->getGraphWidth(), $this->getGraphHeight());
              
              
      $bcColor imagecolorallocate($image$this->bcColorArr[0], $this->bcColorArr[1], $this->bcColorArr[2]);
              
              
      imagefilledrectangle($image00$this->getGraphWidth(), $this->getGraphHeight(), $bcColor);
              
              
      header("Content-type: image/".$this->getGraphType()."");
              
              switch(
      $this->getGraphType()){
                  
                  case 
      'png':
                      
      imagepng($image); 
                  break;
                  
                  case 
      'jpeg':
                      
      imagejpeg($image); 
                  break;
                  
                  case 
      'gif':
                      
      imagegif($image); 
                  break;
              }
              
              
      imagedestroy($image);
          } 
      Ich wollte eben gern etliche Bildteilfunktionen in extra Methoden auslagern.
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        Zitat von nikosch Beitrag anzeigen
        ??
        Welchen Sinn sollte es haben, eine Funktion auszuführen, ohne den Rückgabewert irgendwie auszuwerten?
        Wüsste ich auch gerne.

        ....Ausage das Bild kann nicht angezeigt werden, weil es Feher enthält...
        Sagt ja nur so viel, dass das Bild nicht angezeigt werden kann. Deutet das du ein Fehler in der Image Erstellung hast!

        Kommentar


        • #5
          Zitat von Jens P. Beitrag anzeigen
          Wüsste ich auch gerne.



          Sagt ja nur so viel, dass das Bild nicht angezeigt werden kann. Deutet das du ein Fehler in der Image Erstellung hast!
          Das weis ich selber, ich weis auch warum dann der Fehler ensteht, das Ziel meiner Fragestellung ist ein anderes.
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #6
            das Ziel meiner Fragestellung ist ein anderes.
            Und zwar? Bis jetzt sehen wir nur Pseudocode.
            /*
            *
            * create image
            *
            */
            private function createImage(){

            /*
            *
            * create allowcate
            *
            */
            private function createImage(){
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Stimmt hätte gleich den ralen Code posten sollen.

              PHP-Code:
              <?php
              /*
              *
              *    Klasse für die Darstellung von Graphen mit der GD2
              *
              */
              class Graph{
                  
                  
              /*
                  *
                  *    @ param $graphWidth / breite des darzustellenden graphen
                  *    access private / int
                  *
                  */
                  
              private $graphWidth;
                  
                  
              /*
                  *
                  *    @ param $graphHeight / höhe des darzustellenden graphen
                  *    access private / int
                  *
                  */
                  
              private $graphHeight;
                  
                  
              /*
                  *
                  *    @ param $graphImageType / Bildtyp in dem der Graph dargestellt werden soll
                  *    access private / string
                  *
                  */
                  
              private $graphImageType;
                  
                  
              /*
                  *
                  *    @ param $bcColorArr / array für die Hintergrundfarbe
                  *    access private / array
                  *
                  */
                  
              private $bcColorArr = array();
                  
                  
              /*
                  *
                  *    konstructor
                  *
                  */
                  
              public function __construct($width$height){
                      
                      
              $this->graphWidth $width;
                      
              $this->graphHeight $height;
                  }
                  
                  
              /*
                  *
                  *    methode für die graphenbreite
                  *
                  */
                  
              private function getGraphWidth(){
                      
                      return 
              $this->graphWidth;
                  }
                  
                  
              /*
                  *
                  *    methode für die graphenhöhe
                  *
                  */
                  
              private function getGraphHeight(){
                      
                      return 
              $this->graphHeight;
                  }
                  
                  
              /*
                  *
                  *    methode um die hintergrundfarbe festlegen zu können in hex wert
                  *
                  */
                  
              public function setBgColor($bgColor){
                      
                      
              $this->bgColor $bgColor;
                      
                      return 
              $this->bgColor;
                  }
                  
                  
              /*
                  *
                  *    get methode für die huntergrundfarbe
                  *
                  */
                  
              private function getBgColor(){
                      
                      return 
              $this->bgColor;
                  }
                  
                  
              /*
                  *
                  *    methode um den type des grahen bildes fest zu legen
                  *
                  */
                  
              public function setGraphType($type){
                      
                      
              $this->graphImageType $type;
                      
                      return 
              $this->graphImageType;
                  }
                  
                  
              /*
                  *
                  *    get methode für die weiterverarbeitung des typs
                  *
                  */
                  
              private function getGraphType(){
                      
                      return 
              $this->graphImageType;
                  }
                  
                  
              /*
                  *
                  *    ermitteln der rgb werte für weitere image funktionen
                  *
                  */
                  
              private function rgbWertBgColor(){
                      
                      
              //rotwert  ermitteln 
                      
              $bcRed substr($this->getBgColor(), 02); 
                      
              $bcRed hexdec($bcRed); 
                      
                      
              //gruenwert ermitteln 
                      
              $bcGreen substr($this->getBgColor(), 22); 
                      
              $bcGreen hexdec($bcGreen);
                      
                      
              //blauwert ermitteln
                      
              $bcBlue substr($this->getBgColor(), 42); 
                      
              $bcBlue hexdec($bcBlue); 
                      
                      
              $bcArr = array($bcRed$bcGreen$bcBlue);
                      
                      return 
              $bcArr;
                  }
                  
                  
              /*
                  *
                  *    create image
                  *
                  */
                  
              private function createImage(){
                      
                      
              imagecreate($this->getGraphWidth(), $this->getGraphHeight());
                  }
                  
                  
              /*
                  *
                  *    graph erstellen
                  *
                  */
                  
              public function createGraph(){
                  
                      
              $this->bcColorArr $this->rgbWertBgColor();
                      
                      
              //das hätte ich gern in einer extra methode
                      
              $image imagecreate($this->getGraphWidth(), $this->getGraphHeight());
                      
                      
              //das hätte ich gern in einer extra methode
                      
              $bcColor imagecolorallocate($image$this->bcColorArr[0], $this->bcColorArr[1], $this->bcColorArr[2]);
                      
                      
              //das hätte ich gern in einer extra methode
                      
              imagefilledrectangle($image00$this->getGraphWidth(), $this->getGraphHeight(), $bcColor);
                      
                      
              //das hätte ich gern in einer extra methode
                      
              header("Content-type: image/".$this->getGraphType()."");
                      
                      switch(
              $this->getGraphType()){
                          
                          case 
              'png':
                              
              imagepng($image); 
                          break;
                          
                          case 
              'jpeg':
                              
              imagejpeg($image); 
                          break;
                          
                          case 
              'gif':
                              
              imagegif($image); 
                          break;
                      }
                      
                      
              //das hätte ich gern in einer extra methode
                      
              imagedestroy($image);
                  }
              }
              ?>
              Ich habe kommentiert was ich gern in extra Methoden hätte und diese Methoden würde ich dann gern nur nacheinander in der letzendlichen Ausgabemethode aufführen.

              So habe ich nun z.B. das imagecrate in der extra Methode und gebe das per return dann zurück und will das so einsetzen wie hier

              PHP-Code:
              /*
                  *
                  *    create allowcate
                  *
                  */
                  
              private function createImage(){
                      
                     return 
              imagecolorallocate($this->createImage(), $this->bcColorArr[0], $this->bcColorArr[1], $this->bcColorArr[2]);
                  } 
              dann funktioniert das ganze nicht, da kamm dann eine Meldung wie das Bild kann nicht angezeigt werden weil es Fehler enthält.

              Die Ausgabemethode wie sie jetzt ist
              PHP-Code:
              public function createGraph(){


              funktioniert ja so.

              So rufe ich dann das ganze auf.

              PHP-Code:
              <?php
              require_once('Graph.Class.php');

              //klassen aufruf
              $graph = new Graph(300150);

              //hintergrundfarbe festlegen hexwert ohne # zeichen
              $graph->setBgColor("000000");

              //typ festlegen in dem der graph angezeigt werden soll (format)
              $graph->setGraphType("png");

              $graph->createGraph();
              ?>
              und binde das dann so ein.

              PHP-Code:
              <?php
              error_reporting
              (E_ALL E_STRICT);
              ini_set("display_errors"true);

              echo 
              '<img src="include_graph1.php" alt="graph" />';

              ?>
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar


              • #8
                PHP-Code:
                    private function createImage(){
                        
                        
                imagecreate($this->getGraphWidth(), $this->getGraphHeight());
                    } 
                Keine Rückgabe!!
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Keine Rückgabe!!
                  Ja momentan ist das so, so wie ich den Code da gepostet habe funktioniert er. Aber wenn ich es machen will wie in meinen Vorpostsbeschrieben, dann funktioniert das ganze nicht mehr. Dazu hatte ich die Pseudecodes gepostet die aber aus meinem Originalcode her abgeleitet gewesen.

                  Wenn ich in der Methode ein return einsetze und diese Methode dann, weil die ja das Bild erstellt in der funktion imagecolorallowcate einsetze, dann geht das nicht, da meckert dann PHP rum das kein Bild erstellt werden konnte weil es Fehler enthält.
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  http://www.lit-web.de

                  Kommentar


                  • #10
                    Auch immernoch falsch.

                    private function createImage(){

                    return imagecolorallocate($this->createImage(),
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Und es wäre wohl besser die Rpckgabe von imagecreate in eine variable zuspeichern.

                      Kommentar

                      Lädt...
                      X