porno porno izle rokettube
Ergebnis 1 bis 8 von 8

Thema: Array aus einem Objekt erstellen -> wie?

  1. #1
    Erfahrener Benutzer
    Registriert seit
    30.09.2010
    Beiträge
    125
    Thanks
    3
    Thanked 3 Times in 1 Post

    Standard Array aus einem Objekt erstellen -> wie?

    Hallo,

    ich habe hier eine Objekt, aus dem ich gerne ein Array machen würde, um es in JSON zu wandeln.

    Was sieht das ZF2 hierfür für Möglichkeiten vor?

    Oder ist es möglich ein Objekt direkt in JSON zu wandeln?

    Danke.

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    3
    Thanked 352 Times in 283 Posts

    Standard

    Zitat Zitat von Frau Bauer Beitrag anzeigen
    ich habe hier eine Objekt, aus dem ich gerne ein Array machen würde…
    Dafür gibt es zend-hydrator.

    Zitat Zitat von Frau Bauer Beitrag anzeigen
    Oder ist es möglich ein Objekt direkt in JSON zu wandeln?
    Siehe „JsonSerializable::jsonSerialize
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Erfahrener Benutzer
    Registriert seit
    30.09.2010
    Beiträge
    125
    Thanks
    3
    Thanked 3 Times in 1 Post

    Standard

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Dafür gibt es zend-hydrator.
    Den habe ich mir in der Doku für das ZF2 schon angesehen. Aber ehrlich gesagt: Ich steige da nicht ganz durch. Mir fehlt ein griffiges Beispiel.
    Dein Link führt mich (nach einem Weizen) erkennbar nur zu einer Seite ohne Doku.
    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Hab ich mir angeschaut und auch in meiner Klasse impementiert. Aber irgendwie begreife ich auch hier nicht ganz den Zusammenhang.

    Mal ein Beispiel, wie ich es in meiner Klasse (bzw. Methode), die ein Report-Objekt zurückt gibt, implementiert habe ($this->_array = new ArrayObject()):

    PHP-Code:
    public function getReportFromReportId$reportId ) {
       
    $this->setReportId$reportId );
       
    $reportAssignment $this->setupReportAssignment();
       
    $report           $this->getReportTable()->fetchReportById$reportAssignment );
       
       return 
    json_encode(new ArrayValue($report), JSON_PRETTY_PRINT);
    }

    public function 
    jsonSerialize() {
       return 
    $this->_array;


  4. #4
    Erfahrener Benutzer
    Registriert seit
    30.09.2010
    Beiträge
    125
    Thanks
    3
    Thanked 3 Times in 1 Post

    Standard

    Hallo Kaiuwe und alle anderen,

    kann mir jemand mal ein konkretes Beispiel für die Implementierung des Hydrators aus dem ZF2 geben? Viel verlangt. Ich weiß. Aber ich probiere schon zwei Tage rum und die Zeit wird immer knapper.

    Hier mal mein Model, von dessen Objekt ich ein Array benötige:

    PHP-Code:
    <?php

    namespace Speedy\Model;

    class 
    Report
    {
        
        
        protected 
    $_reportId;
        protected 
    $_description;
        protected 
    $_statement;
       
       
    /**
        * @param mixed $reportId
        */
       
    public function setReportId$reportId ) {
          
    $this->_reportId $reportId;
       }
       
       
    /**
        * @return mixed
        */
       
    public function getReportId() {
          return 
    $this->_reportId;
       }
       
       
    /**
        * @param mixed $description
        */
       
    public function setDescription$description ) {
          
    $this->_description $description;
       }
       
       
    /**
        * @return mixed
        */
       
    public function getDescription() {
          return 
    $this->_description;
       }
       
       
    /**
        * @param mixed $statement
        */
       
    public function setStatement$statement ) {
          
    $this->_statement $statement;
       }
       
       
    /**
        * @return mixed
        */
       
    public function getStatement() {
          return 
    $this->_statement;
       }
       
       public function 
    exchangeArray($data)
       {
          
    $this->setReportId(( ! empty($data['ReportID'])) ? $data['ReportID'] : null);
          
    $this->setDescription(( ! empty($data['Description'])) ? $data['Description'] : null);
          
    $this->setStatement(( ! empty($data['Statement'])) ? $data['Statement'] : null);
       }
     
    }
    Herzlichen Dank im Voraus.

  5. #5
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    3
    Thanked 352 Times in 283 Posts

    Standard

    Zitat Zitat von Frau Bauer Beitrag anzeigen
    kann mir jemand mal ein konkretes Beispiel für die Implementierung des Hydrators aus dem ZF2 geben?
    Ich glaube, du hast etwas falsch verstanden, denn es muss gar nichts in dein Objekt implementiert werden.

    Beispiel:
    PHP-Code:
    $report   = new Report();
    $report->setReportId('Foo');
    $report->setDescription('Bar');
    $report->setStatement('Baz');

    $hydrator = new \Zend\Hydrator\ClassMethods();
    $data     $hydrator->extract($report); // $data enthält das gewünschte Array 
    Das ist alles! Du brauchst keine Methode „exchangeArray“ oder etwas anderes in deinem Objekt.

    Umgedreht funktioniert es ebenfalls:
    PHP-Code:
    $hydrator->hydrate($data$report); 
    Und damit ist dein Objekt „gefüllt“.

    Wenn du zend-db mit der Klasse „TableGateway“ verwendest, dann erstelle diese mit „Zend\Db\ResultSet\HydratingResultSet“ und du bekommst deine Objekt gefüllt mit den Daten aus der Datenbank.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  6. The Following User Says Thank You to Kaiuwe For This Useful Post:

    Frau Bauer (15.08.2017)

  7. #6
    Erfahrener Benutzer
    Registriert seit
    30.09.2010
    Beiträge
    125
    Thanks
    3
    Thanked 3 Times in 1 Post

    Standard

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Ich glaube, du hast etwas falsch verstanden, denn es muss gar nichts in dein Objekt implementiert werden.

    Beispiel:
    PHP-Code:
    $report   = new Report();
    $report->setReportId('Foo');
    $report->setDescription('Bar');
    $report->setStatement('Baz');

    $hydrator = new \Zend\Hydrator\ClassMethods();
    $data     $hydrator->extract($report); // $data enthält das gewünschte Array 
    Das ist alles!
    Mannmannmann. Ohmannonomann.
    Einfacher gehts ja nun wirklich nicht.
    Warum muss das in der Doku so kompliziert erklärt sein.

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Du brauchst keine Methode „exchangeArray“ oder etwas anderes in deinem Objekt.
    Die habe ich halt aus dem Album-Beispiel übernommen, da sie ja für die Formularverarbeitung gebraucht wird, oder etwa nicht?

  8. #7
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    3
    Thanked 352 Times in 283 Posts

    Standard

    Zitat Zitat von Frau Bauer Beitrag anzeigen
    Die habe ich halt aus dem Album-Beispiel übernommen, da sie ja für die Formularverarbeitung gebraucht wird, oder etwa nicht?
    Nein, wird nicht gebraucht, denn auch dem Formular kannst du mitteilen, welchen Hydrator du verwenden möchtest. Dieser wird dann verwendet um die Daten zu extrahieren und den entsprechenden Formularfeldern zuzuweisen bzw. um die Formulardaten wieder an das Objekt zu übergeben.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  9. #8
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    3
    Thanked 352 Times in 283 Posts

    Standard

    Zitat Zitat von Frau Bauer Beitrag anzeigen
    Einfacher gehts ja nun wirklich nicht.
    Warum muss das in der Doku so kompliziert erklärt sein.
    Steht doch genau so in der Doku: „zend-hydrator - Quick Start - Usage“
    Geändert von Kaiuwe (15.08.2017 um 12:18 Uhr)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 23.01.2015, 11:59
  2. Antworten: 1
    Letzter Beitrag: 18.02.2014, 08:49
  3. Schleife für Objekt mit Array
    Von Luka im Forum Einsteigerfragen
    Antworten: 7
    Letzter Beitrag: 02.04.2011, 14:10
  4. Antworten: 3
    Letzter Beitrag: 22.02.2010, 16:00
  5. Objekt aus Zend_Db_Table in Array konvertieren
    Von n4x im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 14.02.2009, 15:11

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •