-4

PHP5 ORIENTADO A OBJETO - PARTE IV

criado por isaac guerra em 02/02/2005 2:54pm
Este artigo é uma continuação, por isso é racinalmente necessário ler a PHP5 ORIENTADO A OBJETO - PARTE III

Esta classe é uma classe básica para criação de Tabelas em suas paginas. Esta Classe também é uma classe básica, mais sera muito interessante construila, pois no futuro seremos capazes de construir tabelas complexas sem escrever html nenhum, a partir desta classe.

Vamos lá, crie uma arquivo chamado classe_compTb.php e salve dentro de /classes/html/ .

E vamos ao código:
<?php
// componente de criação de tabela
class compTb
{
    private $width;
    private $align;
    private $cellspacing;
    private $cellpadding;
    private $border;
    private $bgcolor;
 
    public function compT()
    {
        $this->width = "";
        $this->align = "";
        $this->cellspacing = "";
        $this->cellpadding = "";
        $this->border = "";
        $this->bgcolor = "";
    }
     
    public function set_width($Vwidth)
    {
        $this->width = $Vwidth;
    }

    public function get_width()
    {
        return $this->texto;
    }

    public function set_align($Valign)
    {
        $this->align = $Valign;
    }

    public function get_align()
    {
        return $this->align;
    }

    public function set_cellspacing($Vcellspacing)
    {
        $this->cellspacing = $Vcellspacing;
    }

    public function get_cellspacing()
    {
        return $this->cellspacing;
    }

    public function set_cellpadding($Vcellpadding)
    {
        $this->cellpadding = $Vcellpadding;
    }

    public function get_cellpadding()
    {
        return $this->cellpadding;
    }

    public function set_border($Vborder)
    {
        $this->border = $Vborder;
    }

    public function get_border()
    {
        return $this->border;
    }

    public function set_bgcolor($Vbgcolor)
    {
        $this->bgcolor = $Vbgcolor;
    }

    public function get_bgcolor()
    {
        return $this->bgcolor;
    }

    public function abreTb()
    {
        echo "<TABLE width='$this->width' cellspacing='$this->cellspacing' border='$this->border' cellpadding='$this->cellpadding' align='$this->align' bgcolor='$this->bgcolor'>";
    }

    public function fechaTb()
    {
        echo "</TABLE>";
    }
}
?>

Ta pronto, nossa classe de Tabela, bem mas ainda ta faltando criar as classes de criação de linha as TR e a classe de criação das celulas as TD

Vamos lá, crie um arquivo chamado classe_compTr.php e salve dentro de /classes/html/ .

Vamos ao código:
<?php
class compTr
{
    private $align;
    private $valign;
    private $bgcolor;

    public function compTr()
    {
        $this->align = "";
        $this->valign = "";
        $this->bgcolor = "";
    }

    public function set_align($Valign)
    {
        $this->align = $Valign;
    }

    public function get_align()
    {
        return $this->align;
    }

    public function set_valign($Vvalign)
    {
        $this->valign = $Vvalign;
    }

    public function get_valign()
    {
        return $this->valign;
    }

    public function set_bgcolor($Vbgcolor)
    {
        $this->bgcolor = $Vbgcolor;
    }

    public function get_bgcolor()
    {
        return $this->bgcolor;
    }

    public function abreTr()
    {
        echo "<TR align='$this->align' valign='$this->valign' bgcolor='$this->bgcolor'>";
    }

    public function fechaTr()
    {
        echo "</TR>";
    }
}
?>

Ta pronta a nossa classe de criação de linha de Tabela, falta so a de criação de célula.

Vamos lá, crie um arquivo chamado classe_compTd.php e salve dentro de /classes/html/ .

Vamos ao código:
<?php
class compTd
{
    private $width;
    private $align;
    private $bgcolor;
    private $colspan;
    private $rowspan;

    public function set_width($Vwidth)
    {
        $this->width = $Vwidth;
    }

    public function get_width()
    {
        return $this->width;
    }

    public function set_align($Valign)
    {
        $this->align = $Valign;
    }

    public function get_align()
    {
        return $this->align;
    }

    public function set_bgcolor($Vbgcolor)
    {
        $this->bgcolor = $Vbgcolor;
    }

    public function get_bgcolor()
    {
        return $this->bgcolor;
    }

    public function set_colspan($Vcolspan)
    {
        $this->colspan = $Vcolspan;
    }

    public function get_colspan()
    {
        return $this->colspan;
    }

    public function set_rowspan($Vrowspan)
    {
        $this->rowspan = $Vrowspan;
    }

    public function get_rowspan()
    {
        return $this->rowspan;
    }

    public function abreTd()
    {
        echo "<TD width='$this->width' align='$this->align' bgcolor='$this->bgcolor' colspan='$this->colspan' rowspan='$this->rowspan'>";
    }

    public function fechaTd()
    {
        echo "</TD>";
    }
}
?>

Agora sim acabamos a criação de todas as classes necessárias para criação de uma tabela.

Notem, que todas as tags em html de tabela são compostas, ou seja precisa de uma tag de abertura e outra de fechamento, e consequentemente nossas classe tabém tem métodos de abertura e fechamento, mais deixemos de papo e vamos contruir nossa primeira tabela baseada em objetos php.

<?php
//inclui a classe que criamos.
include_once("classes/html/classe_compTxt.php");
include_once("classes/html/classe_compTb.php");
include_once("classes/html/classe_compTr.php");
include_once("classes/html/classe_compTd.php");

//instanciaremos nosso objeto
$tb = new compTb();
$tr = new compTb();
$td = new compTb();

//Vamos configura a Tabela
//objeto tb
$tb->set_width("80%");
$tb->set_cellspacing("1");
$tb->set_cellpadding("4");
$tb->set_border("0");

//Objeto Td
$td->set_bgcolor("#99CCCC");

//Vou cria um Objeto Txt para colocarmos um texto na pagina tamém.
$txt - new compTxt();
//Vou setar os atributos do txt
$txt->set_face("verdana");
$txt->set_size("2");
$txt->set_color("Red");
$txt->set_negrito(true);
$txt->set_texto("Site de Estudo avançado de PHP, e muito mais!");

// agora vamos criar a tabela
$tb->abreTb();
for ($i = 1; $i <= 10; $i++) {
    $tr->abreTr();
    for ($x = 1; $x <= 7; $x++) {
        $txt->set_texto("linha "$i . " " .  "coluna " . $x);
        $td->abreTd();
        $txt->cria();
        $td->fechaTd();
    }
    $tr->fechaTr();
}
$tb->fechaTb();
?>

Ta pronto criamos nossa primeira tabela baseada em objetos php, notem que eu usei dois loops, uma pra criar as linhas e outro para criar as colunas, mais eu fiz isso para não ficar repetindo manualmente os comandos, mandei o php fazer isso para mim, bem, mais quando voce for fazer suas tabelas nao é necessário usar os lopps, basta usar os objetos, ficou claro, valeu.

Bem aqui acabamos nossos objetos básicos em html, na verdade ainda vai faltar os objetos basicos de formulário html, mais isso a gente ve depois, bem, depois a gente continua falando sobre isso. falou!

Isaac Guerra
www.isaacguerra.net

Comentários:

Mostrando 1 - 7 de 7 comentários
Eu só dei a minha opinião, ao meu ver um bom projeto depende da sua qualidade e não da agilidade que foi feito.

E Thiago, eu tenho o livro do Pablo Dall`Oglio que por sinal é ótimo e comprei para aprofundar os meus conhecimentos em POO.

Mas eu sempre me preocupei em otimizar ao máximo os meus sistemas, e não consigo me acostumar com a idéia de usar programação pra gerar HTML, talvez um dia eu me acostume, mas agora pra mim isso realmente é ridículo.

Uma das modinhas do momento é usar Frameworks prontos, tais como Zend Framework, CodeIgniter, Cake PHP, etc... Alegando seguir um padrão de programação e principalmente por ganhar tempo no desenvolvimento. Pois bem, eu até cheguei a estudar alguns desses frameworks mas nunca consegui chegar a usá-los, pois sei da enorme perda de performance que eles causam.

Um exemplo clássico é o sistema de e-commerce Magento, que foi desenvolvido usando o Zend Framework, é um dos melhores e mais completos sistemas de e-commercer existentes e é open-source, mas por que é pouco utilizado? Simples, pois mesmo num puto de um servidor chega a levar quase 10 segundos pra gerar uma única página. Até carregar uma página da loja virtual o cliente já fechou o navegador.

Sou a favor de otimização e performance, e não de desperdício a toa de processamento.

E estou falando de aplicações web e não PHP-GTK.

Abraços!
29/11/2009 10:43am (~7 anos atrás)

Leonardo, não é uma boa chamar algo de ridículo sem entender com profundidade o significado. De fato, PHP não foi projetado para trabalhar com ótima performance instanciando uma porrada de objetos de várias classes diferentes. No entanto, o processo de renderização de um objeto na forma de HTML é necessário quando você quer, por exemplo, que sua aplicação seja tanto Web quanto Desktop (usando PHP-GTK, por exemplo). Você renderiza os elementos de forma diferente, mas aproveitas as lógicas de negócio.

Além disso, o processo de renderização nem sempre precisa ser totalmente dinâmico. É possível usar cache para guardar coisas que não sofreram mudanças. No final das contas, a performance pode ser melhorada. A manipulação de objetos torna a programação mais hágil que escrever vários HTML.
24/11/2009 9:24pm (~7 anos atrás)

André Taiar disse:
Qual o objetivo dessa "série de artigos"?
Apresentar um tanto de classe meia-boca?

Achei que fosse falar sobre OO.

Pra postar códigos, use a sessão de scripts!!!!!!!!!!!!!!!!!!!!!!!
03/11/2009 10:01am (~7 anos atrás)

lixo². sabia que existe construtor em classes, autoload para carregar todas as classes de um projeto, convenções de desenvolvimento ?
É por isso que o php não vai pra frente.
25/10/2009 4:08pm (~7 anos atrás)

Bons exemplos de criação de html com total orientação a objetos estão no Livro Programando com Orientação a Objetos de Pablo Dall`Oglio, ele ensina criar uma API completa de geração de html.

Bom, não poderia deixar de falar... o comentário do nosso companheiro Leonardo Cesar Teixeira é que foi completamente ridículo, pois a orientação a objetos é algo viável desde que haja reutilização de código pois além de fazer sistemas mais organizados programaticamente falando, se torna muito mais fácil aplicar padrões no desenvolvimento tais como MVC.

HTML é estático sim... mas quando utilizamos dinamismo na sua geração, determinados elementos podem e no caso de uma aplicação OO concisa devem ser tratados como objetos, necessitando assim de uma classe e blá blá blá!
19/10/2009 6:14pm (~7 anos atrás)

Entendo que o Isaac utilizou esse tutorial apenas para fins didáticos.
11/10/2009 9:23am (~7 anos atrás)

Cara, desculpa a sinceridade, mas ao meu ver isso é completamente desnecessário e ridículo.

Por que usar programação pra criar HTML? Programação serve para criar coisas dinâmicas, e não estáticas como o HTML.

Eu sei que a idéia talvez seja fazer um sistema totalmente orientado a objetos, mas além de ser muito mais trabalhoso e desnecessário, não sei se você sabe mas usar programação sem ter necessidade só ajuda a comprometer a performance do servidor e consequentemente do sistema.

Abraços!
06/10/2009 11:10am (~7 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)