Ankündigung

Einklappen
Keine Ankündigung bisher.

Klassen, Funktionen und Vorgabewerte?

Einklappen

Neue Werbung 2019

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

  • Klassen, Funktionen und Vorgabewerte?

    Ich möchte Daten über eine Klasse auslesen und ausgeben, das funktioniert bei der Funktion "treehouse_get_profile" auch schon einmal - wenn ich "return" benutze. Jedoch möchte ich nun das alle folgenden Funktionen die Daten übernehmen.

    An dieser Stelle scheint mein Verständniss aufgehört zu haben, ich kann weder die Funktion in der Variable aufrufen - noch die PHP integrierten Funktionen in diesen benutzen.

    PHP-Code:
    <?php

    class Model_Treehouse {
      public static function 
    treehouse_get_profile($treehouse_username) {
        
    $json_feed_url 'http://teamtreehouse.com/' $treehouse_username '.json';
        
    $json_feed file_get_contents($json_feed_url);
        
        
    $treehouse_profile json_decode($json_feed);

        return 
    $treehouse_profile;
      }

    /* dosnt work
      private static function treehouse_get_profile($treehouse_username) {
        $json_feed_url = 'http://teamtreehouse.com/' . $treehouse_username . '.json';
        $json_feed = file_get_contents($json_feed_url);
        
        $treehouse_profile = json_decode($json_feed);
      }

      private static $treehouse_profile = treehouse_get_profile();
    */

    /* dosnt work
      const $json_feed_url = 'http://teamtreehouse.com/' . $treehouse_username . '.json';
      const $json_feed = file_get_contents($json_feed_url);
      
      const $treehouse_profile = json_decode($json_feed);
    */

    /* dosnt work
      private static $json_feed_url = 'http://teamtreehouse.com/' . $treehouse_username . '.json';
      private static $json_feed = file_get_contents($json_feed_url);
      
      private static $treehouse_profile = json_decode($json_feed);
    */

      
    public static function treehouse_badge_all() {
        if (!empty(
    self::$treehouse_profile->badges)) {
          return 
    self::$treehouse_profile->badges;
        } else {
          return 
    null;
        }
      }

      public static function 
    treehouse_badge_id($id) {
        if (
    array_key_exists($idself::$treehouse_profile->badges)) {
          return 
    self::$treehouse_profile->badges[$id];
        } else {
          return 
    null;
        }
      }

      public static function 
    treehouse_badge_latest($quantity) {
        if (
    count(self::$treehouse_profile->badges) >= $quantity) {
          foreach (
    self::$treehouse->badges as $id=>$value) {
            
    $date[$id] = strtotime($value->earned_date);
          }

          
    array_multisort($dateSORT_DESCself::$treehouse_profile->badges);

          return 
    array_slice(self::$treehouse_profile->badges0$quantity);
        } else {
          return 
    null;
        }
      }

      public static function 
    treehouse_badge_random($quantity) {
        if (
    count(self::$treehouse_profile->badges) >= $quantity) {
          return 
    array_rand(self::$treehouse_profile->badges$quantity);
        } else {
          return 
    null;
        }
      }
    }

    ?>


  • #2
    Zitat von InitArt Beitrag anzeigen
    ich kann weder die Funktion in der Variable aufrufen - noch die PHP integrierten Funktionen in diesen benutzen.
    Ich versteh nicht ganz, was du damit meinst.

    Hat es einen Grund, warum alles Static ist?
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Du musst die get-funktion schon aufrufen...
      Und ich versteh nicht ganz, wieso du alle deine functions statisch machst.
      Alternativ kannst du mit einem Konstruktor arbeiten und/oder mit Klassenvariablen.

      Und nutz lieber curl anstatt file_get_content
      Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

      Kommentar


      • #4
        Vielen dank für den Anstoss, ich habe es nun mit dem constructor gemacht - funktioniert ganz gut. cURL werde ich mir mal anschauen.

        PHP-Code:
        <?php

        class TreehouseController {
          private 
        $username '';

          function 
        __construct($username) {
            
        $json_feed_url 'http://teamtreehouse.com/' $username '.json';
            
        $json_feed file_get_contents($json_feed_url);
            
            
        $treehouse_profile json_decode($json_feed);

            
        $this->profile $treehouse_profile;
          }
        }

        ?>
        PHP-Code:
        <?php

        class TreehouseModel extends TreehouseController {
          public function 
        treehouse_badge_all() {
            if (!empty(
        $this->profile->badges)) {
              return 
        $this->profile->badges;
            } else {
              return 
        null;
            }
          }

          function 
        treehouse_badge_id($id) {
            if (
        array_key_exists($id$this->profile->badges)) {
              return 
        $this->profile->badges[$id];
            } else {
              return 
        null;
            }
          }

          function 
        treehouse_badge_latest($quantity) {
            if (
        count($this->profile->badges) >= $quantity) {
              foreach (
        $this->profile->badges as $id=>$value) {
                
        $date[$id] = strtotime($value->earned_date);
              }

              
        array_multisort($dateSORT_DESC$this->profile->badges);

              return 
        array_slice($this->profile->badges0$quantity);
            } else {
              return 
        null;
            }
          }

          function 
        treehouse_badge_random($quantity) {
            if (
        count($this->profile->badges) >= $quantity) {
              
        shuffle($this->profile->badges);
              return 
        array_slice($this->profile->badges0$quantity);
            } else {
              return 
        null;
            }
          }
        }

        ?>

        Kommentar


        • #5
          Error reporting an? Du müsstest zumindest eine Notice kriegen von wegen Undefined property. $this->profile wird nämlich einfach gesetzt. deklarier es mal als Klassenvariable.
          Und wieso arbeitest du nun mit zwei Klassen?
          Auch die benennung find ich komisch, weil das mit einem MVC eher weniger zu tun hat
          Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

          Kommentar


          • #6
            Zitat von Geromel Beitrag anzeigen
            Auch die benennung find ich komisch, weil das mit einem MVC eher weniger zu tun hat
            Wieso, nur weil der View vergessen wurde?

            PHP-Code:
            class TreehouseModel extends TreehouseController implements TreehouseView 
            Fixed.

            Kommentar

            Lädt...
            X