Olá caros leitores,
Hoje abordarei como construir aplicações em php, utilizandoa idéia de classes e objetos.
Não vou, entretanto, abordar aspectos teóricos sobre classes e objetos nesse tutorial. Meu objetivo, neste primeiro tutorial da série, é mostrar os primeiros passos para construção de layouts utilizando orientação à objeto.
Então, mãos à obra! Nosso “desenho final” será um layout de três colunas, com menu de navegação, header e rodapé, como mostra a figura a seguir :
- Layout que será construído
Iremos desenvolver, portanto, 7 classes : “layout”, “header”, “menu_nav”, “barra_esq”, “corpo”, “barra_dir”, “rodape”. Percebam que a classe “layout” será utilizada para “unir” todas as outras. Hoje, começaremos a desenvolver o código da classe layout.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?php //Criado por : Raphael Monroe Marcondes // BLOG : www.raphaelmonroe.com class layout { //construtor da classe... function __construct() { //Chama a função de inclusão de classes necessárias... $this->inclui_classes(); //Chama a função de inicialização de variáveis... $this->inicializa_variaveis(); } //Função pra incluir todas as classes que precisaremos para o desenvolvimento //do layout... function inclui_classes() { include_once("head.class.php"); include_once("menu_nav.class.php"); include_once("barra_esq.class.php"); include_once("corpo.class.php"); include_once("barra_dir.class.php"); include_once("rodape.class.php"); } //Função responsável por criar objetos(instâncias) daquelas classes adicionais. //A partir de uma linha "$var = new objeto();", você cria um objeto que será //representado por $var. function inicializa_variaveis() { $this->head = new head(); $this->menu_nav = new menu_nav(); $this->barra_esq = new barra_esq(); $this->corpo = new corpo(); $this->barra_dir = new barra_dir(); $this->rodape = new rodape(); } } ?> |
Salve o código acima como “layout.class.php” utilizando o seu editor favorito.
O arquivo fonte pode ser baixado aqui.
Lembrando que se você rodar o código, nada acontecerá ainda. Estamos iniciando nossos trabalhos!
Aguardem os próximos posts!
Abraço.

Oi Raphael, tudo bem?
Muito legal as dicas cara! Só não entendi as partes que você usou o ” $this->”..
Poderia explicar um pouco mais?
Valeu!
Fala Roberto blz?
Seguinte cara. Usamos o “$this->” para se referir a uma “variável global da classe”, isto é, a partir do código “$this->var = new var();”, estamos criando uma variável $var, que será “vista” por toda a classe. Assim, se em alguma função eu precisar de $var, posso chamar $this->var e ter acesso à ela, sem a necessidade de mandá-la como parâmetro à função.
Qualquer dúvida, comente de novo sem problemas!
Obrigado. []`s
[...] Requisitos: Artigo “Tutorial PHP5 – Construção de Layout“. [...]
Eu estava deseperado, pois precisava fazer um layout exatamente igual ao seu “desenho final” acima. Caiu como uma luva!
Acontece que não entendo nada de CSS! Vou ler a parte 2, talvez vc me dê também a outra luva! rsrsrsrsr. Valeu!
Rafael
Nunca achei na internet nada sobre php tão bem explicado, até mesmo pessoas leigas no assunto conseguem entender tudinho.Além de saber os códigos você tem o dom de saber transmitir.Serei frequentadora assídua deste blog.Continue por favor com o tutorial de php .Obrigada.
Ale.
Rapaz, eu até entendo sua boa vontade, mas na boa, recomendo ler algumas coisinhas sobre PHP antes de sair publicando artigos desse nível.
Recomendo também, dar uma lida sobre Orientação a Objetos, pois ficou claro na sua pseudo-classe que faltou domínio no assunto.
E outra: public, private e protected cai bem
Para seu “incluir_classes” eu posso te recomendar duas coisas:
1. Autoload – http://br.php.net/autoload
2. Namespaces – http://br.php.net/namespace
Bons estudos !
Abraço !
Raphael,
A ideia da classe realmente é boa, porem voce cometeu algumas falhas no código no que diz respeito a versões novas do PHP.
1. Escopo dentro da classe, métodos e propriedades devem ser publicos, privados, etc..
2. Ao inved de require e include, usar um Autoloader é mais recomendado
3. Não é regra, mas existe hoje um padrão de nomenclatura de classes usando camelCase, ou seja, a classe seria Layout e MenuNav e similares e os arquivos teriam estes mesmos nomes, ou melhor ainda teriam um escopo de namespace (antes do 5.3, depois da pra usar namespace mesmo):
Design_Layout, Design_MenuNav …
com isso voce poderia usar autoloaders padroes como o do ZF e diversos outros Frameworks, e todas classes estariam numa pasta Design.
Design/Layout.php, Design/MenuNav.php …
Enfim, algumas dicas para vc melhorar o código, entre em contato se quiser discutir esses conceitos.
Abraço
@Rafael Dohms e @hlegius :
Obrigado pelos comentários e por terem visitado o Blog.
Reconheço que as dicas que vocês passaram são válidas e devem ser utilizadas por todos que desejam criar layouts utilizando php.
Mas, como todos os artigos aqui no meu blog, pode-se perceber que nunca utilizei frases como: “Isso é o certo” ou “Isso sempre deve ser feito” ou até mesmo “Sou certificado na área, manjo tudo e minhas idéias devem sempre ser seguidas”. Pois bem, como vocês mesmo disseram, essa forma por mim apresentada não foi uma das melhores. E o objetivo era realmente esse. Iniciar um assunto e aprender com os visitantes. Esse é o maior objetivo do meu blog : Aprender.
Na época desse artigo, estava iniciando meus estudos e queria compartilhar o andamento com o pessoal que visita o blog. Portanto, se, no caso, eu ainda estivesse estudando isso, seus comentários seriam de ótima ajudam (e realmente continuam sendo para os leitores) e teriam muito a acrescentar ao meu desenvolvimento. Entretanto, hoje trabalho na área de aplicações corporativas, utilizando Wicket, JPA, Spring e muitos outros frameworks Java.
Portanto, estou sempre aberto a sugestões e críticas. Por isso, peço que continuem comentando e ajudando os estudantes e amantes da programação.
Mais uma vez obrigado pelas dicas!
Um abraço!
@Raphael
Que bom, deixei o comentário mesmo por querer lhe indicar novas areas de estudo e evolução. Minha filosofia é de que é importante publicar um blog mesmo que ache o que fez “incompleto” ou ate incorreto, pois isto vai gerar discussões como esta e voce vai acabar no final aprendendo algo novo.
“Um bom desenvolvedor deve sabe expressar suas opiniões publicamente e defender sua posição, ou admitir seu erro” (Cal Evans)
Abraço e boa sorte ai no futuro
Legal que não tenha levado pro lado ofensivo !
Vale lembrar que o ponto que eu queria chegar era: conduzir os iniciantes da linguagem ao erro. Essas “meias-verdades” costumam confundir e muito quem está tentando ler sobre tal assunto.
Precisar de alguma coisa, pode dar um grito aí !
Abraço !