Pergunta

Eu estou no processo de reformatação minha classe (ver abaixo) - Eu acho que eu cometi o erro de definir tudo com a mesma visibilidade na minha classe, enquanto que as propriedades devem ser realmente privado e getters / setters devem ser públicos na maioria casos.

Para agarrar uma propriedade Eu só faço $ caminho-> propertyname mas tenho notado seus mais prático ter setters / getters. Se eu fosse para implementar getters, eu deveria fazer um para cada propriedade ou eu posso fazer um para toda a classe? Assim, por exemplo dizer que eu quero obter o nome do controlador ...

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

E isso iria devolver o controlador de propriedade privada? É comum ter um mais genérico getter / setter ou mesmo um método híbrido que recebe e conjuntos para mim?

Aqui está a estrutura de classes (apenas Propriedades / 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
    }
}
Foi útil?

Solução

Tendo setters e getters em você caso é inútil.

No caso de você precisa fazer nada além de retornar controlador, você não precisa getter como você não precisa setter se você não fazer nada com a propriedade depois de ter sido definido.

No caso de você realmente quer getters e setters, você pode usar __get e métodos __set mágica para todas as suas propriedades. Mas isso é totalmente inútil se o caso é como eu descrevi acima.

Outras dicas

dar uma olhada em sobrecarga em php: http://php.net/overload

Existem dois métodos mágicos __get() e __set() que pode fazer exatamente o que você quer

objetos

PHP ter algum bom métodos mágicos (embora Eu não usar todos eles, porque ele pode ficar confuso). O que você pode estar procurando é __get () e __set () . Você ainda teria que refazer todo o seu código se você optar por fazer seus campos de dados privada (que você deve de modo que você não tem seus outros campos de código acessando incorretamente. Fazendo dessa forma, ajuda a tornar o seu código um pouco melhor e mais fácil de manter.

Embora, eu costumo tentar ter getters e setters para cada campo de dados privados, pois você pode ver facilmente qualquer validação para cada campo. Além disso, eu sou mais um desenvolvedor Java do que um desenvolvedor PHP.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top