turk porno porno escort rokettube
Ergebnis 1 bis 2 von 2

Thema: ExchangeArray in Entities

  1. #1
    Neuer Benutzer
    Registriert seit
    26.04.2013
    Beiträge
    2
    Thanks
    0
    Thanked 3 Times in 1 Post

    Standard ExchangeArray in Entities

    Hallo,

    in deinem Buch stattest du deine Entities mit der exchangeArray-Methode aus. Leider hat diese Methode bei dir einen kleinen Schönheitsfehler: So kann ich z.Bsp. nicht den Wert 0 oder speichern, oder bereits eingebene Daten löschen.

    PHP-Code:
    public function exchangeArray(array $array)
    {
      foreach (
    $array as $key => $value) {
        if (empty(
    $value)) {
          continue;
        }
        
    $method 'set' StaticFilter::execute($key'wordunderscoretocamelcase');
        if (!
    method_exists($this$method)) {
          continue;
        }
        
    $this->$method($value);
      }

    spricht etwas gegen???
    PHP-Code:
    if (empty($value) && $value !==&& $value !== '') {
      continue;

    Danke
    Gruß Daniel

  2. The Following 3 Users Say Thank You to dwolke For This Useful Post:

    acanadaparkas (22.05.2014), naracinapabl (22.05.2014), suggmenstiffany (23.05.2014)

  3. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Ich will mal an anderer Stelle einhaken:
    Zitat Zitat von dwolke Beitrag anzeigen
    …spricht etwas gegen???
    Es spricht insgesamt etwas gegen die Methode „exchangeArray“.

    Denn wie du bestimmt schon mitbekommen hast, wird diese Methode in jeder Klasse einer Entität wiederholt. Wiederholungen sind ein Problem, da wir diese nicht haben wollen und zu Fehlern führen. Eleganter wäre es, die Methode „exchangeArray“ und „getArrayCopy“ komplett zu entfernen und damit das „Befüllen“ und „Auslesen“ des Objekts aus diesem selbst rauszuhalten. (Beide Methoden sind übrigens von der PHP-eigenen Klasse „ArrayObject“ abgeleitet.)

    Das Zend Framework liefert dafür eine passende Lösung „Zend\Stdlib\Hydrator“.

    Einfaches Beispiel:
    PHP-Code:
    class CrustEntity
    {
        protected 
    $id;
        protected 
    $name;
        protected 
    $costs;

        public function 
    setId($id)
        {
            
    $this->id $id;
        }

        public function 
    getId()
        {
            return 
    $this->id;
        }

        public function 
    setName($name)
        {
            
    $this->name $name;
        }

        public function 
    getName()
        {
            return 
    $this->name;
        }
        
        public function 
    setCosts($costs)
        {
            
    $this->costs $costs;
        }
        
        public function 
    getCosts()
        {
            return 
    round($this->costs2);
        }
    }

    $data = array(
        
    'id'    => 2,
        
    'name'  => 'Foo',
        
    'costs' => 10.2875,
    );
    $crust = new CrustEntity();

    $hydrator = new \Zend\Stdlib\Hydrator\ClassMethods();

    // Befüllen
    $hydrator->hydrate($data$crust);

    // Auslesen/Extrahieren
    $crustData $hydrator->extract($crust); 
    Damit wäre auch dein momentanes Problem nicht mehr vorhanden, denn du könntest den Preis der Kruste auch auf "0" setzen.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  4. The Following 3 Users Say Thank You to Kaiuwe For This Useful Post:

    acanadaparkas (22.05.2014), naracinapabl (22.05.2014), suggmenstiffany (23.05.2014)

Ähnliche Themen

  1. Tablegateway exchangeArray not called
    Von 105026584 im Forum ZF2 Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 20.03.2014, 18:25
  2. Hydrator: Entities befüllen
    Von frollein im Forum ZF2 Formulare
    Antworten: 0
    Letzter Beitrag: 21.03.2013, 11:06
  3. Antworten: 1
    Letzter Beitrag: 06.03.2013, 13:27
  4. Verschachtelte Entities
    Von Cedric_ im Forum ZF2 DB
    Antworten: 2
    Letzter Beitrag: 22.10.2012, 22:21
  5. ZF Autoloader mit Namespaces (Doctrine Entities)
    Von KeKs0r im Forum Installation & Konfiguration
    Antworten: 8
    Letzter Beitrag: 06.10.2010, 16:08

Lesezeichen

Berechtigungen

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