Frage

Ich bin in dem Prozess meine Klasse von Neuformatierung (unten gesehen) - Ich glaube, ich den Fehler gemacht, alles mit der gleichen Sichtbarkeit in meiner Klasse zu setzen, während Eigenschaften wirklich privat sein sollten und Getter / Setter sollte öffentlich sein in den meisten Fälle.

Um eine Eigenschaft zu packen ich nur $ weg-> Property aber ich habe seine praktischere bemerkt Setter / Getter zu haben. Wenn ich Getter implementieren waren, sollte ich machen eine für jede Eigenschaft oder kann ich ein für die gesamte Klasse zu machen? So zum Beispiel sagen, ich will den Namen des Controllers bekommen ...

public function getController( ) {
    return $this->controller;
}

Und das würde das Controller Privateigentum zurückkehren? Ist es üblich, ein allgemeineres Getter / Setter zu haben oder sogar ein Hybridverfahren, das bekommt und Sets für mich?

Hier ist die Klassenstruktur (nur Eigenschaften / Methoden):

class urlParser {

    public static $url      = '';
    public static $controller   = '';
    public static $baseController = '';
    public static $urls     = '';
    public static $template     = '';
    public static $captures     = '';
    public static $contentXML   = '';

    function __construct( $urls ) {

        $this->urls = $urls;

        $this->baseController = $urls['default'];

        $this->get_url();
    }

    public function get_url() {
        // sets following properties:
        // url, template, controller, contentXML, baseController
    }
}
War es hilfreich?

Lösung

Mit Getter und Setter in Ihnen Fall sinnlos ist.

Wenn Sie etwas zu tun haben, außer Controller Rückkehr, die Sie nicht brauchen Getter, wie Sie Setter nicht brauchen, wenn Sie etwas nicht tun, mit Eigenschaft, nachdem sie eingestellt wurde.

Falls Sie wirklich Getter und Setter, können Sie __get und __set magische Methoden für alle Ihre Eigenschaften. Aber das ist völlig sinnlos, wenn der Fall ist, wie ich oben beschrieben.

Andere Tipps

zu sehen, in PHP zu überlasten: http://php.net/overload

Es gibt zwei magische Methoden __get() und __set() die genau tun könnte, was Sie wollen

PHP-Objekte haben ein paar nette magische Methoden (obwohl ich habe nicht alle von ihnen, weil es verwirrend bekommen). Diejenige, die Sie suchen können, ist __get () und __set () . Sie müssten noch alle Ihren Code Refactoring, wenn Sie Ihre Datenfelder privat wählen (die Sie sollten, so dass Sie Ihre anderen Code nicht Felder falsch zugreifen. Es auf diese Weise tun hilft, Ihren Code ein wenig besser zu machen und leichter aufrecht zu erhalten.

Obwohl ich in der Regel versuchen, Getter und Setter für jedes privates Datenfeld zu haben, weil Sie leicht jede Validierung für jedes Feld sehen. Plus Ich bin eher ein Java-Entwickler als ein PHP-Entwickler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top