Jump to content
dennis3380

private functions?!!!

Recommended Posts

dennis3380

pessoal,

podem-me dar um exemplo classico que se justifique usar uma "private" _function ???? estou a começar com o CI e estou um pouco confuso com isto...

acho lógico por exemplo colocar "privada" a função do login que te deixa registado, assim seria impossivel escrever a função no url para entrares na area dos "registados" sem fazer login, mas já uso o metodo "is_logged_in" para esta situação que é bem melhor, por isso gostava de saber outro exemplo...

Share this post


Link to post
Share on other sites
yoda

Para ser sincero, não vejo qualquer utilidade nisso no CodeIgniter, é má programação (mas a framework em si é má, portanto ..).

De qualquer forma, e dando um exemplo estúpido mas que muita gente usa, imagina que tens uma função de validação, que é usada em vários casos, supondo neste que tens um site para inserção de veículos, dos quais motas, carros e veículos pesados, onde todos têm uma marca e modelo que precisa ser validada contra a base de dados para garantir que as marcas e modelos respectivos realmente existem. Podias, neste contexto, criar uma função privada dentro do Controller que chama-se um Model para a validação e fizesse mais umas quantas coisas que precisasses, de modo a reduzir a quantidade de código no Controller.


class Veiculos extends Controller
{
    function mota() {
       // coisas do costume
      $this->_validar($_POST);
    }

    function ligeiro() {}

    function pesado() {}

    function _validar() {
       // chamada do model e validação
   }
}

Share this post


Link to post
Share on other sites
dennis3380

pois, já procurei pela net e não encontro exemplos em que se note que uma função private faz mesmo falta, mas deve haver, talvez em projectos mais avançados e complexos...

de qualquer maneira obrigado yoda!

Share this post


Link to post
Share on other sites
ribeiro55

Apenas por questões de encapsulamento.

Garantir que lógica interna não está exposta.

Não faz falta faaaaaaaaaalta, mas é boa prática e deixa as classes com bom aspecto.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
yoda

Apenas por questões de encapsulamento.

Garantir que lógica interna não está exposta.

Não faz falta faaaaaaaaaalta, mas é boa prática e deixa as classes com bom aspecto.

No contexto em que a metem, não faz sentido. MVC como o padrão se diz, devia manter os Controllers o mais simples possível, coisa que com o CI não acontece, daí a inutilidade teórica de métodos privados no CI. Usam-se, mas é má programação.

Share this post


Link to post
Share on other sites
ribeiro55

Eu nem sequer olhei para que linguagem era, muito menos a ver o contexto em que foi aplicado :)

Private Functions são tipicamente transversais, e devem grande parte da existência ao encapsulamento. Isto independentemente de qualquer contexto, pois isso já depende de quem as escreve :)

(não estou a dizer que não tens razão. Estou a responder ao assunto do tópico)


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.