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

  • InitArt
    hat ein Thema erstellt Klassen, Funktionen und Vorgabewerte?.

    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;
        }
      }
    }

    ?>

  • alxy
    antwortet
    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.

    Einen Kommentar schreiben:


  • Geromel
    antwortet
    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

    Einen Kommentar schreiben:


  • InitArt
    antwortet
    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;
        }
      }
    }

    ?>

    Einen Kommentar schreiben:


  • Geromel
    antwortet
    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

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    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?

    Einen Kommentar schreiben:

Lädt...
X