Pregunta

Estoy en el proceso de formatear mi clase (ver a continuación) - Creo que he cometido el error de fijar todo con la misma visibilidad en mi clase, mientras que las propiedades deben ser muy privado y getters / setters deben ser públicos en la mayoría los casos.

Para hacerse con una propiedad acabo de hacer $ camino-> propertyname pero me he dado cuenta de sus más práctico tener setters / captadores. Si tuviera que aplicar captadores, debería hacer uno para cada propiedad o puedo hacer uno para toda la clase? Así, por ejemplo, digo que quiero para obtener el nombre del controlador ...

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

Y eso sería devolver la propiedad privada controlador? ¿Es común tener un captador / definidor más genérico o incluso un método híbrido que consigue y conjuntos para mí?

Aquí está la estructura de clases (sólo propiedades / métodos):

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
    }
}
¿Fue útil?

Solución

Tener setters y getters en caso que no tiene sentido.

En caso de que tenga que hacer nada, además de devolver controlador, no es necesario getter y cuando no se necesita colocador si no se hace nada con la propiedad después de que se haya establecido.

En caso de que realmente quieren captadores y definidores, puede utilizar __get y __set métodos mágicos para todas sus propiedades. Pero eso es totalmente inútil si el caso es que he descrito anteriormente.

Otros consejos

echar un vistazo a la sobrecarga en php: http://php.net/overload

hay dos métodos mágicos __get() y __set() que podría hacer exactamente lo que quiere

objetos PHP tienen algunas buenas rel="nofollow métodos magia (aunque yo no uso todos ellos, ya que puede resultar confuso). El que usted puede estar buscando es __get () y __set () . Todavía tendría que refactorizar todo el código si decide hacer sus campos de datos privada (que debe de modo que usted no tiene su otro código de acceso a los campos de forma incorrecta. Hacerlo de esta manera ayuda a hacer que el código un poco mejor y más fácil de mantener.

A pesar de que, por lo general tratan de tener getters y setters para cada campo de datos privada porque se puede ver fácilmente cualquier validación para cada campo. Además yo soy más de un desarrollador de Java que un desarrollador de PHP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top