Ir para conteúdo
Fórum CódigoFonte.net
nelson jr.

ajuda com class

Recommended Posts

Olá, estava programando até o momento e sem nenhum desconforto, foi quando me deparei com a seguinte situação:

Eu preciso de informações de outra class, sendo que não da pra eu usar extends, pois já esta sendo usado pra extender a classe de conexão.

Pra ser mais claro vou tentar dar um exemplo prático do que esta acontecendo e do que eu gostaria.

$n = new news;
$n->add();

class news extends connection {

    function add() {

        echo $tagCloud->tags;
    }

}

Vamos lá.

A variável "$tagCloud" não esta dentro da class connection.

E eu gostaria de obter as informações que contém na classe $tagCloud.

Tentei usar implements, mais não funcionou;

Tentei também chamar a class dentro da funcao add();

Complicado...

Alguém teria alguma solução ou dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uia! realmente, o PHP nao tem implements.. heheh

Ou vc extende a classe em connection, que provavelmente ela estará sendo extendida em news tb..

Ou entao, para usar os atrib dessa classe, vc pode instanciar um obj tb..

Agora eu nao entendi o teu UML veio.. Me explicae teu diagrama d classes pra ver c a gente axa uma luz no fim do tunel.. rs

:lol:

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza. Vamos ver se eu consigo explicar melhor a situação.

class news extends connection {

    var $id;
    var $publish = "n";
    var $timestamp;
    var $author;
    var $title;
    var $intro;
    var $text;
    
    var $keyword;

    function add() {
        if(!$tagCloud->tags) { return 0; }
        $sql = "INSERT INTO news (news_publish, news_date, news_author, news_title, news_intro, news_text) VALUES ('".$this->publish."', '".$this->timestamp."', '".$this->author."', '".utf8_encode($this->title)."', '".utf8_encode($this->intro)."', '".utf8_encode($this->text)."')";
        parent::setSql($sql);
        if(parent::sqlQuery())
        {
            $tag_section = 'news';
            $tag_rep = parent::lastId('news_id','news');
            $tagCloud->newTag($tag_section, $tag_rep);
        }
    }
}

Bom. $tagCloud não existe na class news nem na extendida(connection), porém eu queria obter informações dentro da classe tagCloud.

Eu ja tentei instanciar ela dentro da class news, mais não deu, usei global também e nada...

O negócio ta complicado. :P

Acho que é isso.

Qualquer coisa pergunta ai também, to precisando dessa ajuda. :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, acho que entendi..

Se vc quiser usar uma função em especifico, vc teria que dar um require_once na tua classe tagCloud antes de instanciar um objeto pra ela.

Se voce quiser um dado em especifico já declarado anteriormente, ou seja, algum valor dentro de uma variável específica, ficaria mais complicado por causa da herança..

Vc teria que programar em 3 camadas e passar como parametro, acho..

tenta organizar tuas classes +- asssim:

Arquivo de chamada - Ex: agenda.php

Classe base - Ex: agenda.class.php

Classe de acesso aos dados - Ex: agenda_banco.class.php

Mas acredito q seja alguma função dentro da classe q vc queira usar ne?

Seria so dar um require(<class_path>."classe_desejada.php");

e instanciar normalmente..

Espero ter ajudado

:huh:

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

filesgh, valeu pela atenção ai...

mais eu consegui de outra forma.

Só uma obs. quanto ao require_once: eu tenho um arquivo no cabeçalho que da include em todas as class e instancia-as.

$tagCloud->tags = "linux, mac, apple, windows";
$tagCloud->tag_section = "news";
if($news->add())
{
    $tagCloud->newTag();
}
Talvez pra você não fique tão claro, mais deu certinho desse jeito. Fico até melhor do que o jeito que eu queria antes. :) Outro detalhe que achei interessante que você colocou.
require_once("agenda.php");
require_once("agenda.class.php");
Isso para o php tem diferença? Não da na mesma se eu fizer:
require_once("agenda.php");
require_once("coisa_legal.php") //aqui contém a class

Té mais cara, valeu.

[]s

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diferença nenhuma! é só pra fins d entendimento mesmo.. Assim, eu acho q fica mais limpo.. qq um que pegar o codigo ja ta ciente q tem uma classe ali, rsrs

Mas é so convenção msm.. nada mais!

qq coisa, tamo ae

:lol:

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...