Como passar a instancia de um objeto da classe filha para a pai

394 views
Skip to first unread message

Romildo Paiter

unread,
Jun 29, 2011, 10:22:39 AM6/29/11
to phpav...@googlegroups.com, php-b...@googlegroups.com
E ai pessoal beleza.

To com um pipininho aqui.  Queria ver com vocês se vocês sabem passa a instancia da classe filha para uma função que esta vindo da classe pai.

Exemplo.

abstract class OObjectVO {
   
    static private $myself = NULL;
   
    static public function controiObjeto($dataSource = NULL, $aClass = NULL){

        while($arr = mysql_fetch_array($dataSource, MYSQL_ASSOC)){
            self::$myself = new $aClass();
            // echo $i++; // "<pre>".$vei['modelo']."</pre><hr/>";
            while (list($key, $value) = each(self::$myself)) {
                // echo "Key: $key; Value: " .$vei[$key]. "<br />\n";
                self::$myself->$key = $arr[$key];
            }
            $listaO[] = self::$myself;
        }
       
        return $listaO;               
    }
}


class OVeiculoVO extends OObjectVO{
   
    public $modelo;
    public $tipo;


    static public function create(){
        return new OVeiculoVO();
    }
   
}


Usando:

    static public function getVeiculoPorId($veiculoId){
        $db = db();
        $sql = TSqlStatement::sql( $this->arqSql, "VEICULO_POR_ID_SQL");
        $sql->bindInteger("id", $veiculoId);
        $dataSource = $db->select($sql);

        return OVeiculoVO::controiObjeto($dataSource, new OVeiculoVO() );
    }

é essa a dúvida! Se alguem tiver alguma ideia será muito bem vinda.

Obrigado pessoal.

--
[]`s

Romildo Jozué Paiter
Bacharelando Sistema da Informação :: UFMT
MCSA: Microsoft Certified
Desenvolvimento de Sistemas e Rede de Computadores.
Fone: (65) 9601-5503

Cassiano Ricardo Mourão

unread,
Jun 29, 2011, 10:29:05 AM6/29/11
to php-b...@googlegroups.com
O método getVeiculoPorId() é de outra classe, certo?

Tente apenas atribuir a instância a uma variável e passe a variável por parâmetro, ao invés da chamada de instância um novo objeto:

$aOVeiculoVO = new OVeiculoVO();
return OVeiculoVO::controiObjeto($dataSource, $$aOVeiculoVO);

Passando por referência você já trabalha com ela direto na pai.

Em 29 de junho de 2011 11:22, Romildo Paiter <romild...@gmail.com> escreveu:
getVeiculoPorId

Michel Felipe - Pós Eng. de Software

unread,
Jun 29, 2011, 10:32:18 AM6/29/11
to php-b...@googlegroups.com
Sim...qual o prob de fato ae?? dessa forma q vc fez n funcionou?

vc pode tentar tbm um new self( ) no lugar de new OVeiculoVO()

Em 29 de junho de 2011 11:22, Romildo Paiter <romild...@gmail.com> escreveu:

--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.



--
Atenciosamente


Analista de Sistemas
PHP / Zend Framework / CakePHP / Java Desktop / JavascriptMVC / EXTJS / JQuery / PostGres/ MySQL

71 9196-4178
www.vidacriativa.com.br

Michel Felipe - Pós Eng. de Software

unread,
Jun 29, 2011, 10:36:56 AM6/29/11
to php-b...@googlegroups.com
Cassiano, so duas correções rapidinho:

1 - o "$$" é para gerar variáveis apartir do valor de uma variável, e não para passar um valor por referência.Por exemplo:

$str = 'aaa';
$aaa = 'test';

echo $$str  //exibe: "test"

O simbolo correto para passar valores por referência é o "&"  =p

2 - Todo objeto é passado por referência. Ou seja, se vc passar um objeto como parâmetro de uma função/método e alterar uma de suas propriedades dentro dele, vc acessará esse valor alterado de fora do método ^^

Acho legal isso q agente discuti e aprende bastante!! mas acredito q o prob q o colega ae tem nem é esse. Qual o prob realmente Romildo??

--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.

Cassiano Ricardo Mourão

unread,
Jun 29, 2011, 10:38:47 AM6/29/11
to php-b...@googlegroups.com
Massa, valeu Michel!

Cara tem um bom tempo q não passo uma variável por referência, daí nem lembrava... Na verdade, lembro que em C é o &, certo?
Sobre o objeto, eu não sabia não =D

Romildo Paiter

unread,
Jun 29, 2011, 11:06:50 AM6/29/11
to php-b...@googlegroups.com
E ai pessoal... C nem usa referencia, usa ponteiros que são o * e &.

O que eu queria fazer é não ter que ficar fazendo uma nova instancia de um objeto apra só colocar no momento que eu chamar a função.

E sim pegar o objeto da própria classe automaticamente.
 
Vou fazer um teste com o self no lugar do objeto e ver no que da.

Já aviso vocês.

André da Silva Severino

unread,
Jun 29, 2011, 11:14:59 AM6/29/11
to php-b...@googlegroups.com
self ou $this->metodo;
Reply all
Reply to author
Forward
0 new messages