Jump to content
rikardo_92

PHP por Objectos - Sessões

Recommended Posts

rikardo_92

Ando aqui a mexer em PHP e vou fazer quase tudo orientado por objectos. Pensei em ter o index.php a funcionar como um main (cria instâncias dos objectos e coordena-os entre si).

Nisto tenho uma class Database que gere a conexão (MySQL). E agora o que me levanta dúvidas é como fazer uma sessão nisto.

Eu tenho uma classe para o utilizador, a sessão entra onde? Dentro da classe do utilizador há uma sessão, ou a sessão é algo aparte?

Outra coisa, para instanciar o utilizador, devo-lhe passar a instância da database e o ID do user a criar e ele vai buscar tudo sozinho, ou devo passar tudo o que quero que ele tenha (username, ID, mail, etc)?

Obrigado ;)

Share this post


Link to post
Share on other sites
yoda

Para criares um sistema OOP tens de ir "bastante" fundo na questão. Analisar algumas das frameworks existentes (principalmente Kohana) é uma boa opção se estás indeciso sobre como proceder.

No teu caso, criaria as seguintes classes :

Session

Cookie

User

Auth

(fora algumas intermediárias e outras simplesmente omitidas)

Com isto quero dizer que o user não tem nenhuma sessão, pois não faz parte dele. Neste esquema a classe Auth utilizaria a Session, User e Cookie (opcional).

Quanto à questão da instância, a class User não precisa de saber nada da base de dados a nível de instâncias, só precisa de saber estritamente o que pertence ao User, as propriedades directamente envolvidos com ele, que serão, caso o esquema seja bem montado e pensado, as mesmas que o correspondente na base de dados. A 2ª opção portanto.

Share this post


Link to post
Share on other sites
rikardo_92

A Kohana trabalha com MVC, ainda estou a tentar entender o conceito. Na faculdade ainda só programei em Java e não foi seguindo o MVC.

Pelo que entendo as classes Session, Cookie e User seriam models e a classe Auth um controller?

Share this post


Link to post
Share on other sites
yoda

A Kohana trabalha com MVC, ainda estou a tentar entender o conceito. Na faculdade ainda só programei em Java e não foi seguindo o MVC.

Kohana é HMVC.

Hierarquical (estrutura)

Model (classe)

View (classe)

Controller (classe)

O Model é tudo o que seja tratamento de dados directamente na fonte (base de dados, ficheiros, etc).

A View é tudo o que seja definição de variáveis que vão aparecer no template, assim como tratamento de informação proveniente dos Models que não possa (por razões lógicas) ser tratada nos Models.

O Controller é tudo o que sejam páginas, é o "interface" entre Models e Views.

Hierarquical significa que toda a estrutura MVC, neste caso, segue uma hierarquia. Por exemplo, se tiveres um site com veiculos do quais ligeiros e pesados, podes criar um Model usando uma pasta "Veiculo" e um ficheiro "Ligeiro", ficando a chamada do Model da seguinte forma :

$ligeiro = new Model_Veiculo_Ligeiro;

O sistema tem, por conseguinte, inteligência para saber que o último nome é o nome do ficheiro / classe e qualquer outro entre esse e o primeiro é a hierarquia de pastas. A situação é algo mais complexa que isto, mas o ideal é veres por ti.

Pelo que entendo as classes Session, Cookie e User seriam models e a classe Auth um controller?

Auth é uma classe tal como os outras, mas não é Model, é uma classe abstracta, porque usa vários componentes diferentes.

Share this post


Link to post
Share on other sites
bLACKLOTUS90

Também gostava de desenvolver algo puramente em POO. Mas infelizmente não consegui ;)


# Catholic programmingif(!defined('GOD')) die();

Share this post


Link to post
Share on other sites
brunoais

Também gostava de desenvolver algo puramente em POO. Mas infelizmente não consegui ;)

Pessoalmente, se queres algo puramente OO começa com java. É uma boa maneira para começar. Não é fácil mas se tens geito para isto aprenderás num instante (eu aprendi o conceito básico em uns 2 meses (ou talvez um pouquito mais... 3 meses)) depois é só aprofundar o funcionamento


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
rikardo_92

Pessoalmente, se queres algo puramente OO começa com java. É uma boa maneira para começar. Não é fácil mas se tens geito para isto aprenderás num instante (eu aprendi o conceito básico em uns 2 meses (ou talvez um pouquito mais... 3 meses)) depois é só aprofundar o funcionamento

Já tive um ano de java na faculdade. O que me confunde aqui é que o que eu dava era um main com I/O (ficheiros e ecrã) e o resto era a aplicação lógica. Mas essa organização não funciona aqui porque trabalho com DB, e nunca sei onde entra a DB. Acho que não faz sentido o main trabalhar com a DB e passar tudo o que obtém à aplicação (pelo menos seria assim seguind o que aprendi até agora).

Also ainda não percebo muito a utilização dos templates.

Share this post


Link to post
Share on other sites
bLACKLOTUS90

bruno, já estudei java e até me entendia bem com aquilo. E em relação ao desenvolver um projecto POO em php, o que eu tenho é uma mistura de POO + programação modular. Por exemplo, trabalho com uma classe que arranjei para Templates (especie de smarty), o que é optimo para quem quer ter uma webpage com várias layouts. Fiz uma class MYSQL para tratar da respectiva ligação e consultas à BD. Fiz outra class FILE para escrever, ler, apagar, criar ficheiros. etc... 

O problema está em não conseguir obter uma visão de como meter tudo a funcionar em classes. lol. Por exemplo isso da session, user, auth, cookie, etc... para mim é chinês...


# Catholic programmingif(!defined('GOD')) die();

Share this post


Link to post
Share on other sites
yoda

bruno, já estudei java e até me entendia bem com aquilo. E em relação ao desenvolver um projecto POO em php, o que eu tenho é uma mistura de POO + programação modular. Por exemplo, trabalho com uma classe que arranjei para Templates (especie de smarty), o que é optimo para quem quer ter uma webpage com várias layouts. Fiz uma class MYSQL para tratar da respectiva ligação e consultas à BD. Fiz outra class FILE para escrever, ler, apagar, criar ficheiros. etc... 

O problema está em não conseguir obter uma visão de como meter tudo a funcionar em classes. lol. Por exemplo isso da session, user, auth, cookie, etc... para mim é chinês...

OOP é uma visão do mundo, uma visão lógica. Kohana é a única framework que conheço que se aproxima mais do conceito de OOP (aproxima, porque PHP não é OOP). Não dá para criar uma framework puramente OOP, mas dá para garantir que a maior parte do codigo é escrito dessa forma.

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.