2016-10-31 2 views
2

Wenn ich eine Eloquent Modellklasse will aus Gründen der Implementierung eine Schnittstelle ist der folgende Ansatz Sinn Getter und Setter haben, macht oder gibt es eine ‚Laravel‘ Annäherung an das ProblemHinzufügen von Getter und Setter zu Laravel Modell

class MyClass extends Model implements someContract 
{ 

    public function setFoo($value) { 
     parent::__set('foo', $value); 
     return $this; 
    } 

    public function getFoo() { 
     return parent::__get('foo'); 
    } 
} 
+1

Warum Rückkehr von einer 'Set' Methode? Und warum benötigt 'getFoo()' einen '$ varName'? – Doom5

+0

Nur blöde Tippfehler! Fest. – Gazzer

+1

@ Doom5, so dass Sie Methoden ketten können. Wenn ein Setter den Elternteil nicht zurückgibt, kann dies nicht geschehen. Geben Sie das Objekt immer auf einem Setter zurück. – DevDonkey

Antwort

5

Sie suchen wahrscheinlich nach accessors (Getters) und mutators (Setter).

Beispiel einer accessor (Getter) in Laravel:

public function getFirstNameAttribute($value) 
{ 
    return ucfirst($value); 
} 

Beispiel eines Mutator (setter) in Laravel:

public function setFirstNameAttribute($value) 
{ 
    $this->attributes['first_name'] = strtolower($value); 
} 
+0

Diese Benennungskonvention scheint besser geeignet zu sein, wenn ein Attribut über eine magische Methode wie $ $ myClass-> first_name = 'BOB' gesetzt wird, 'als 'bob' gesetzt und als 'Bob' zurückgegeben wird, anstatt 'a' zu implementieren Vertrag. – Gazzer

+0

Hallo Alexey, weißt du vielleicht, wie man einen universellen Getter in Laravel erstellt .... so dass alle Attribute aktiviert werden? Ich werde eine neue Frage zu SO stellen, wenn Sie das wissen und den Link hier posten, damit Sie ihn beantworten können ... Sagen Sie einfach ja oder nein - hier. – lewis4u