O grupo no qual você está postando é um grupo da Usenet. As mensagens postadas neste grupo farão com que o seu e-mail fique visível para qualquer pessoa na internet.
seguinte, existe como eu alterar a visibilidade dos atributos do meu objeto em tempo de execução?
tenho um método que me retorna um objeto ($a) com os atributos privados e métodos (gets,sets) publicos, até ai tudo bem, mas quando eu for enviar esse objeto $a, eu preciso que ele esteja com os atributos todos publicos, pq o cara que vai pegar ele do outro lado não sabe ver get e set e sim somente o nome do atributo, ou seja:
lá ele pega assim $a->nome;
e não assim: $a->getNome();
e nao tenho como alterar o outro lado de forma nenhuma, por isso precisava passar o objeto com os atributos publicos!!!
esses método não me atendem, pois aquele cara que recebe do outro lado, não sabe PHP, ele trabalha com outra linguagem...
por isso eu tenho que mandar o objeto já pronto com os atributos public
Então Giovani como o Gilson falou da, usando _GET E _SET.
Vc pode fazer assim:
$a->nome = $a->GetNome();
E la ele pega o valor usando $a->nome.
Em 30/10/2009 18:01, Giolvani < inavloigrupos@gmail.com > escreveu:
Bah Gilson...
esses método não me atendem, pois aquele cara que recebe do outro lado, não sabe PHP, ele trabalha com outra linguagem... por isso eu tenho que mandar o objeto já pronto com os atributos public
vlw...
Gilson Uchôa escreveu: > Da uma olhada no manual do PHP sobre os métodos mágico _GET _SET !!! > > --- > Gilson Uchôa - Web Master - Desenvolvedor em PHP > > E-mail: gsu2@ubbi.com.br > webmaster_gilson@yahoo.com.br > > webmaster.gilson@gmail.com > > > >
Filial Rio de Janeiro
Rua Álvaro Alvim 21, 21° Andar
Cinelândia – Centro RJ
CEP: 20.031-010 – Rio de Janeiro RJ
Telefone: (21)-2220-4531
LinkNet
De: listaphp@googlegroups.com [mailto:listaphp@googlegroups.com] Em nome de Mauricio Merlin
Enviada em: sexta-feira, 30 de outubro de 2009 18:47
Para: listaphp@googlegroups.com
Assunto: [ PHP - Google ] Re: Alterar visibilidade
Então Giovani como o Gilson falou da, usando _GET E _SET.
Vc pode fazer assim:
$a->nome = $a->GetNome();
E la ele pega o valor usando $a->nome.
Em 30/10/2009 18:01, Giolvani < inavloigru...@gmail.com > escreveu:
Bah Gilson...
esses método não me atendem, pois aquele cara que recebe do outro lado, não sabe PHP, ele trabalha com outra linguagem...
por isso eu tenho que mandar o objeto já pronto com os atributos public
é como eu disse, o cara que recebe o objeto do outro lado não é um PHP e por isso ele não consegue interpretar os métodos mágicos
que são suportados apenas no PHP...
> Então Giovani como o Gilson falou da, usando _GET E _SET.
> Vc pode fazer assim:
> $a->nome = $a->GetNome();
> E la ele pega o valor usando $a->nome.
> Em 30/10/2009 18:01, *Giolvani < inavloigru...@gmail.com >* escreveu:
> Bah Gilson...
> esses método não me atendem, pois aquele cara que recebe do outro
> lado,
> não sabe PHP, ele trabalha com outra linguagem...
> por isso eu tenho que mandar o objeto já pronto com os atributos
> public
> vlw...
> Gilson Uchôa escreveu:
> > Da uma olhada no manual do PHP sobre os métodos mágico _GET _SET !!!
> > ---
> > Gilson Uchôa - Web Master - Desenvolvedor em PHP
mais então vc ta mandando o objeto pro cara de que forma se for de alguma
forma serializada ou sei la algum protocolo tipo amf
vc vai ter q deixar os atributos public para que o cara possa pegar do outro
lado se não sem chances.
nessas horas q vai pro lixo a orientação... quando sobe barreiras entre as
aplicações.
> é como eu disse, o cara que recebe o objeto do outro lado não é um PHP e
> por isso ele não consegue interpretar os métodos mágicos
> que são suportados apenas no PHP...
> bom... acho q não tem jeito mesmo!!! heheh
> mas mesmo assim se alguém souber....
> obrigado pela ajuda!!!
> Mauricio Merlin escreveu:
> > Então Giovani como o Gilson falou da, usando _GET E _SET.
> > Vc pode fazer assim:
> > $a->nome = $a->GetNome();
> > E la ele pega o valor usando $a->nome.
> > Em 30/10/2009 18:01, *Giolvani < inavloigru...@gmail.com >* escreveu:
> > Bah Gilson...
> > esses método não me atendem, pois aquele cara que recebe do outro
> > lado,
> > não sabe PHP, ele trabalha com outra linguagem...
> > por isso eu tenho que mandar o objeto já pronto com os atributos
> > public
> > vlw...
> > Gilson Uchôa escreveu:
> > > Da uma olhada no manual do PHP sobre os métodos mágico _GET _SET
> !!!
> > > ---
> > > Gilson Uchôa - Web Master - Desenvolvedor em PHP
Amigo, não dá pra mudar a visibilidade das propridades em tempo de
execução, mas voce pode criar uma nova classe em tempo de execução com
as propriedades com a visibilidade que voce deseja.
Se voce sua PHP 5, voce pode fazer:
class Original {
private $var1 = 1; // variaveis privadas que voce precisa
private $var2 = 2;
public function toArrayPrivateVars()
{
return get_class_vars(get_class($this));
}
}
$strvar = "";
$class = new Original();
$vars = $class->toArrayPrivateVars();
foreach($vars as $name => $value)
$strvar .= "public \${$name} = {$value};\n";
$strClass = '
class Pretendida
{'.$strvar.'
}
$newObject = new Pretendida();
return $newObject;
';
$_ = create_function('',$strClass);
var_dump($_());
É isso aí, no final voce terá um objeto com todas as propriedades da
classe Original ( a classe que voce quer que possui propriedades
privadas) com visibilidade pública.
Cuida que ali a gente tá criando a classe Pretendida por uma string
para o create_function().
> seguinte, existe como eu alterar a visibilidade dos atributos do meu
> objeto em tempo de execução?
> tenho um método que me retorna um objeto ($a) com os atributos privados
> e métodos (gets,sets) publicos, até ai tudo bem,
> mas quando eu for enviar esse objeto $a, eu preciso que ele esteja com
> os atributos todos publicos, pq o cara que vai
> pegar ele do outro lado não sabe ver get e set e sim somente o nome do
> atributo, ou seja:
> lá ele pega assim
> $a->nome;
> e não assim:
> $a->getNome();
> e nao tenho como alterar o outro lado de forma nenhuma, por isso
> precisava passar o objeto com os atributos publicos!!!
@Diego, isso é foda mesmo... é exatamento com o amf que estou tendo problema...
nao quero ter que mudar todas minhas classes colocando os atributos como public...
@Tiago, tive mais ou menos essa idéia ai, mas nesse caso ai eu teria que adicionar um metodo em todas minhas classes...
então um amigo meu me falou pra usar Reflexão... e dando uma estudada meio por cima, creio que resolva meu problema!!!
se eu conseguir resolver eu falo aqui como ficou!!!
> Amigo, não dá pra mudar a visibilidade das propridades em tempo de
> execução, mas voce pode criar uma nova classe em tempo de execução com
> as propriedades com a visibilidade que voce deseja.
> Se voce sua PHP 5, voce pode fazer:
> class Original {
> private $var1 = 1; // variaveis privadas que voce precisa
> private $var2 = 2;
> public function toArrayPrivateVars()
> {
> return get_class_vars(get_class($this));
> }
> }
> $newObject = new Pretendida();
> return $newObject;
> ';
> $_ = create_function('',$strClass);
> var_dump($_());
> É isso aí, no final voce terá um objeto com todas as propriedades da
> classe Original ( a classe que voce quer que possui propriedades
> privadas) com visibilidade pública.
> Cuida que ali a gente tá criando a classe Pretendida por uma string
> para o create_function().
> On 30 out, 17:43, Giolvani <inavloigru...@gmail.com> wrote:
>> Olá pessoal,
>> estou com uma duvida meio trash, mas lá vai...
>> seguinte, existe como eu alterar a visibilidade dos atributos do meu
>> objeto em tempo de execução?
>> tenho um método que me retorna um objeto ($a) com os atributos privados
>> e métodos (gets,sets) publicos, até ai tudo bem,
>> mas quando eu for enviar esse objeto $a, eu preciso que ele esteja com
>> os atributos todos publicos, pq o cara que vai
>> pegar ele do outro lado não sabe ver get e set e sim somente o nome do
>> atributo, ou seja:
>> lá ele pega assim
>> $a->nome;
>> e não assim:
>> $a->getNome();
>> e nao tenho como alterar o outro lado de forma nenhuma, por isso
>> precisava passar o objeto com os atributos publicos!!!
> @Diego, isso é foda mesmo... é exatamento com o amf que estou tendo
> problema...
> nao quero ter que mudar todas minhas classes colocando os atributos como
> public...
> @Tiago, tive mais ou menos essa idéia ai, mas nesse caso ai eu teria que
> adicionar um metodo em todas minhas classes...
> então um amigo meu me falou pra usar Reflexão... e dando uma estudada
> meio por cima, creio que resolva meu problema!!!
> se eu conseguir resolver eu falo aqui como ficou!!!
> obrigado pela atenção de todos...
> --
> att.
> Giolvani
> Tiago Natel de Moura escreveu:
> > Amigo, não dá pra mudar a visibilidade das propridades em tempo de
> > execução, mas voce pode criar uma nova classe em tempo de execução com
> > as propriedades com a visibilidade que voce deseja.
> > Se voce sua PHP 5, voce pode fazer:
> > class Original {
> > private $var1 = 1; // variaveis privadas que voce precisa
> > private $var2 = 2;
> > public function toArrayPrivateVars()
> > {
> > return get_class_vars(get_class($this));
> > }
> > }
> > $newObject = new Pretendida();
> > return $newObject;
> > ';
> > $_ = create_function('',$strClass);
> > var_dump($_());
> > É isso aí, no final voce terá um objeto com todas as propriedades da
> > classe Original ( a classe que voce quer que possui propriedades
> > privadas) com visibilidade pública.
> > Cuida que ali a gente tá criando a classe Pretendida por uma string
> > para o create_function().
> > On 30 out, 17:43, Giolvani <inavloigru...@gmail.com> wrote:
> >> Olá pessoal,
> >> estou com uma duvida meio trash, mas lá vai...
> >> seguinte, existe como eu alterar a visibilidade dos atributos do meu
> >> objeto em tempo de execução?
> >> tenho um método que me retorna um objeto ($a) com os atributos privados
> >> e métodos (gets,sets) publicos, até ai tudo bem,
> >> mas quando eu for enviar esse objeto $a, eu preciso que ele esteja com
> >> os atributos todos publicos, pq o cara que vai
> >> pegar ele do outro lado não sabe ver get e set e sim somente o nome do
> >> atributo, ou seja:
> >> lá ele pega assim
> >> $a->nome;
> >> e não assim:
> >> $a->getNome();
> >> e nao tenho como alterar o outro lado de forma nenhuma, por isso
> >> precisava passar o objeto com os atributos publicos!!!
Mas ele pode usar ReflectionClass::getProperties() só para pegar as propriedades privadas e depois criar o objeto em tempo de execução.
Alterar a visibilidade só no php 5.3 mesmo.
Tiago Natel de Moura
http://blog.tiagomoura-design.com.br Date: Sat, 31 Oct 2009 23:27:06 -0200
Subject: [ PHP - Google ] Re: Alterar visibilidade
From: raf...@siqueira.ws
To: listaphp@googlegroups.com
> Amigo, não dá pra mudar a visibilidade das propridades em tempo de
> execução, mas voce pode criar uma nova classe em tempo de execução com
> as propriedades com a visibilidade que voce deseja.
> Se voce sua PHP 5, voce pode fazer:
> class Original {
> private $var1 = 1; // variaveis privadas que voce precisa
> private $var2 = 2;
> public function toArrayPrivateVars()
> {
> return get_class_vars(get_class($this));
> }
> }
> $newObject = new Pretendida();
> return $newObject;
> ';
> $_ = create_function('',$strClass);
> var_dump($_());
> É isso aí, no final voce terá um objeto com todas as propriedades da
> classe Original ( a classe que voce quer que possui propriedades
> privadas) com visibilidade pública.
> Cuida que ali a gente tá criando a classe Pretendida por uma string
> para o create_function().
> On 30 out, 17:43, Giolvani <inavloigru...@gmail.com> wrote:
>> Olá pessoal,
>> estou com uma duvida meio trash, mas lá vai...
>> seguinte, existe como eu alterar a visibilidade dos atributos do meu
>> objeto em tempo de execução?
>> tenho um método que me retorna um objeto ($a) com os atributos privados
>> e métodos (gets,sets) publicos, até ai tudo bem,
>> mas quando eu for enviar esse objeto $a, eu preciso que ele esteja com
>> os atributos todos publicos, pq o cara que vai
>> pegar ele do outro lado não sabe ver get e set e sim somente o nome do
>> atributo, ou seja:
>> lá ele pega assim
>> $a->nome;
>> e não assim:
>> $a->getNome();
>> e nao tenho como alterar o outro lado de forma nenhuma, por isso
>> precisava passar o objeto com os atributos publicos!!!
>> alguém já teve esse problema??!!!
>> abraços
-- Rafael Siqueira
+55 21 8248-3030
_________________________________________________________________
Tchattez en direct en en vidéo avec vos amis !
http://www.windowslive.fr/messenger/
> Mas ele pode usar ReflectionClass::getProperties() só para pegar as
> propriedades privadas e depois criar o objeto em tempo de execução.
> Alterar a visibilidade só no php 5.3 mesmo.
> Tiago Natel de Moura
> http://blog.tiagomoura-design.com.br > ------------------------------
> Date: Sat, 31 Oct 2009 23:27:06 -0200
> Subject: [ PHP - Google ] Re: Alterar visibilidade
> From: raf...@siqueira.ws
> To: listaphp@googlegroups.com
> Opa!
> Com reflexão você consegue alterar a visibilidade de sua propriedade, mas a
> versão do PHP precisa ser 5.3. Dá uma olhada lá no php.net só.
> @Diego, isso é foda mesmo... é exatamento com o amf que estou tendo
> problema...
> nao quero ter que mudar todas minhas classes colocando os atributos como
> public...
> @Tiago, tive mais ou menos essa idéia ai, mas nesse caso ai eu teria que
> adicionar um metodo em todas minhas classes...
> então um amigo meu me falou pra usar Reflexão... e dando uma estudada
> meio por cima, creio que resolva meu problema!!!
> se eu conseguir resolver eu falo aqui como ficou!!!
> obrigado pela atenção de todos...
> --
> att.
> Giolvani
> Tiago Natel de Moura escreveu:
> > Amigo, não dá pra mudar a visibilidade das propridades em tempo de
> > execução, mas voce pode criar uma nova classe em tempo de execução com
> > as propriedades com a visibilidade que voce deseja.
> > Se voce sua PHP 5, voce pode fazer:
> > class Original {
> > private $var1 = 1; // variaveis privadas que voce precisa
> > private $var2 = 2;
> > public function toArrayPrivateVars()
> > {
> > return get_class_vars(get_class($this));
> > }
> > }
> > $newObject = new Pretendida();
> > return $newObject;
> > ';
> > $_ = create_function('',$strClass);
> > var_dump($_());
> > É isso aí, no final voce terá um objeto com todas as propriedades da
> > classe Original ( a classe que voce quer que possui propriedades
> > privadas) com visibilidade pública.
> > Cuida que ali a gente tá criando a classe Pretendida por uma string
> > para o create_function().
> > On 30 out, 17:43, Giolvani <inavloigru...@gmail.com> wrote:
> >> Olá pessoal,
> >> estou com uma duvida meio trash, mas lá vai...
> >> seguinte, existe como eu alterar a visibilidade dos atributos do meu
> >> objeto em tempo de execução?
> >> tenho um método que me retorna um objeto ($a) com os atributos privados
> >> e métodos (gets,sets) publicos, até ai tudo bem,
> >> mas quando eu for enviar esse objeto $a, eu preciso que ele esteja com
> >> os atributos todos publicos, pq o cara que vai
> >> pegar ele do outro lado não sabe ver get e set e sim somente o nome do
> >> atributo, ou seja:
> >> lá ele pega assim
> >> $a->nome;
> >> e não assim:
> >> $a->getNome();
> >> e nao tenho como alterar o outro lado de forma nenhuma, por isso
> >> precisava passar o objeto com os atributos publicos!!!
> >> alguém já teve esse problema??!!!
> >> abraços
> --
> Rafael Siqueira
> +55 21 8248-3030
> ------------------------------
> Achetez un nouveau PC et bénéficiez de Windows 7 dès sa sortie ! En savoir
> plus <http://www.portable-windows.com/>
> ja tentou serializar mesmo, ou usar até jSon ?
> $x= json_encode($this);
> e envia o $x pro cara ... ele deve ter uma funcao pronta pra json, sei > la ... assim, somente irao os atributos, metodos não serao > enviados...claro
> 2009/10/31 Tiago Natel de Moura <tiago_mo...@live.com > <mailto:tiago_mo...@live.com>>
> Sim.
> Mas ele pode usar ReflectionClass::getProperties() só para pegar
> as propriedades privadas e depois criar o objeto em tempo de execução.
> Alterar a visibilidade só no php 5.3 mesmo.
> Tiago Natel de Moura
> http://blog.tiagomoura-design.com.br > ------------------------------------------------------------------------
> Date: Sat, 31 Oct 2009 23:27:06 -0200
> Subject: [ PHP - Google ] Re: Alterar visibilidade
> From: raf...@siqueira.ws <mailto:raf...@siqueira.ws>
> To: listaphp@googlegroups.com <mailto:listaphp@googlegroups.com>
> Opa!
> Com reflexão você consegue alterar a visibilidade de sua
> propriedade, mas a versão do PHP precisa ser 5.3. Dá uma olhada lá
> no php.net <http://php.net> só.
> @Diego, isso é foda mesmo... é exatamento com o amf que estou
> tendo
> problema...
> nao quero ter que mudar todas minhas classes colocando os
> atributos como
> public...
> @Tiago, tive mais ou menos essa idéia ai, mas nesse caso ai eu
> teria que
> adicionar um metodo em todas minhas classes...
> então um amigo meu me falou pra usar Reflexão... e dando uma
> estudada
> meio por cima, creio que resolva meu problema!!!
> se eu conseguir resolver eu falo aqui como ficou!!!
> obrigado pela atenção de todos...
> --
> att.
> Giolvani
> Tiago Natel de Moura escreveu:
> > Amigo, não dá pra mudar a visibilidade das propridades em
> tempo de
> > execução, mas voce pode criar uma nova classe em tempo de
> execução com
> > as propriedades com a visibilidade que voce deseja.
> > Se voce sua PHP 5, voce pode fazer:
> > class Original {
> > private $var1 = 1; // variaveis privadas que voce precisa
> > private $var2 = 2;
> > public function toArrayPrivateVars()
> > {
> > return get_class_vars(get_class($this));
> > }
> > }
> > $newObject = new Pretendida();
> > return $newObject;
> > ';
> > $_ = create_function('',$strClass);
> > var_dump($_());
> > É isso aí, no final voce terá um objeto com todas as
> propriedades da
> > classe Original ( a classe que voce quer que possui propriedades
> > privadas) com visibilidade pública.
> > Cuida que ali a gente tá criando a classe Pretendida por uma
> string
> > para o create_function().
> >> estou com uma duvida meio trash, mas lá vai...
> >> seguinte, existe como eu alterar a visibilidade dos
> atributos do meu
> >> objeto em tempo de execução?
> >> tenho um método que me retorna um objeto ($a) com os
> atributos privados
> >> e métodos (gets,sets) publicos, até ai tudo bem,
> >> mas quando eu for enviar esse objeto $a, eu preciso que ele
> esteja com
> >> os atributos todos publicos, pq o cara que vai
> >> pegar ele do outro lado não sabe ver get e set e sim
> somente o nome do
> >> atributo, ou seja:
> >> lá ele pega assim
> >> $a->nome;
> >> e não assim:
> >> $a->getNome();
> >> e nao tenho como alterar o outro lado de forma nenhuma, por
> isso
> >> precisava passar o objeto com os atributos publicos!!!
> >> alguém já teve esse problema??!!!
> >> abraços
> -- > Rafael Siqueira
> +55 21 8248-3030
> ------------------------------------------------------------------------
> Achetez un nouveau PC et bénéficiez de Windows 7 dès sa sortie !
> En savoir plus <http://www.portable-windows.com/>
> essa é uma idéia que não tinha pensando ainda... vou ver essa
> possibilidade!!!
> obrigado!
> --
> att.
> Giolvani
> Felipe Nascimento de Moura escreveu:
> > ja tentou serializar mesmo, ou usar até jSon ?
> > $x= json_encode($this);
> > e envia o $x pro cara ... ele deve ter uma funcao pronta pra json, sei
> > la ... assim, somente irao os atributos, metodos não serao
> > enviados...claro
> > Mas ele pode usar ReflectionClass::getProperties() só para pegar
> > as propriedades privadas e depois criar o objeto em tempo de
> execução.
> > Alterar a visibilidade só no php 5.3 mesmo.
> > Opa!
> > Com reflexão você consegue alterar a visibilidade de sua
> > propriedade, mas a versão do PHP precisa ser 5.3. Dá uma olhada lá
> > no php.net <http://php.net> só.
> > @Diego, isso é foda mesmo... é exatamento com o amf que estou
> > tendo
> > problema...
> > nao quero ter que mudar todas minhas classes colocando os
> > atributos como
> > public...
> > @Tiago, tive mais ou menos essa idéia ai, mas nesse caso ai eu
> > teria que
> > adicionar um metodo em todas minhas classes...
> > então um amigo meu me falou pra usar Reflexão... e dando uma
> > estudada
> > meio por cima, creio que resolva meu problema!!!
> > se eu conseguir resolver eu falo aqui como ficou!!!
> > obrigado pela atenção de todos...
> > --
> > att.
> > Giolvani
> > Tiago Natel de Moura escreveu:
> > > Amigo, não dá pra mudar a visibilidade das propridades em
> > tempo de
> > > execução, mas voce pode criar uma nova classe em tempo de
> > execução com
> > > as propriedades com a visibilidade que voce deseja.
> > > Se voce sua PHP 5, voce pode fazer:
> > > class Original {
> > > private $var1 = 1; // variaveis privadas que voce
> precisa
> > > private $var2 = 2;
> > > É isso aí, no final voce terá um objeto com todas as
> > propriedades da
> > > classe Original ( a classe que voce quer que possui
> propriedades
> > > privadas) com visibilidade pública.
> > > Cuida que ali a gente tá criando a classe Pretendida por uma
> > string
> > > para o create_function().
> > >> estou com uma duvida meio trash, mas lá vai...
> > >> seguinte, existe como eu alterar a visibilidade dos
> > atributos do meu
> > >> objeto em tempo de execução?
> > >> tenho um método que me retorna um objeto ($a) com os
> > atributos privados
> > >> e métodos (gets,sets) publicos, até ai tudo bem,
> > >> mas quando eu for enviar esse objeto $a, eu preciso que ele
> > esteja com
> > >> os atributos todos publicos, pq o cara que vai
> > >> pegar ele do outro lado não sabe ver get e set e sim
> > somente o nome do
> > >> atributo, ou seja:
> > >> lá ele pega assim
> > >> $a->nome;
> > >> e não assim:
> > >> $a->getNome();
> > >> e nao tenho como alterar o outro lado de forma nenhuma, por
> > isso
> > >> precisava passar o objeto com os atributos publicos!!!
> > >> alguém já teve esse problema??!!!
> > >> abraços
> > --
> > Rafael Siqueira
> > +55 21 8248-3030
> ------------------------------------------------------------------------
> > Achetez un nouveau PC et bénéficiez de Windows 7 dès sa sortie !
> > En savoir plus <http://www.portable-windows.com/>
> > --
> > Felipe N. de Moura
> > Desenvolvimento Web
>> essa é uma idéia que não tinha pensando ainda... vou ver essa
>> possibilidade!!!
>> obrigado!
>> --
>> att.
>> Giolvani
>> Felipe Nascimento de Moura escreveu:
>> > ja tentou serializar mesmo, ou usar até jSon ?
>> > $x= json_encode($this);
>> > e envia o $x pro cara ... ele deve ter uma funcao pronta pra json, sei
>> > la ... assim, somente irao os atributos, metodos não serao
>> > enviados...claro
>> > Mas ele pode usar ReflectionClass::getProperties() só para pegar
>> > as propriedades privadas e depois criar o objeto em tempo de
>> > execução.
>> > Alterar a visibilidade só no php 5.3 mesmo.
>> > Opa!
>> > Com reflexão você consegue alterar a visibilidade de sua
>> > propriedade, mas a versão do PHP precisa ser 5.3. Dá uma olhada lá
>> > no php.net <http://php.net> só.
>> > @Diego, isso é foda mesmo... é exatamento com o amf que estou
>> > tendo
>> > problema...
>> > nao quero ter que mudar todas minhas classes colocando os
>> > atributos como
>> > public...
>> > @Tiago, tive mais ou menos essa idéia ai, mas nesse caso ai eu
>> > teria que
>> > adicionar um metodo em todas minhas classes...
>> > então um amigo meu me falou pra usar Reflexão... e dando uma
>> > estudada
>> > meio por cima, creio que resolva meu problema!!!
>> > se eu conseguir resolver eu falo aqui como ficou!!!
>> > obrigado pela atenção de todos...
>> > --
>> > att.
>> > Giolvani
>> > Tiago Natel de Moura escreveu:
>> > > Amigo, não dá pra mudar a visibilidade das propridades em
>> > tempo de
>> > > execução, mas voce pode criar uma nova classe em tempo de
>> > execução com
>> > > as propriedades com a visibilidade que voce deseja.
>> > >
>> > > Se voce sua PHP 5, voce pode fazer:
>> > >
>> > > class Original {
>> > > private $var1 = 1; // variaveis privadas que voce
>> > precisa
>> > > private $var2 = 2;
>> > >
>> > > public function toArrayPrivateVars()
>> > > {
>> > > return get_class_vars(get_class($this));
>> > > }
>> > > }
>> > >
>> > > $strvar = "";
>> > >
>> > > $class = new Original();
>> > > $vars = $class->toArrayPrivateVars();
>> > > foreach($vars as $name => $value)
>> > > $strvar .= "public \${$name} = {$value};\n";
>> > >
>> > > $strClass = '
>> > > class Pretendida
>> > > {'.$strvar.'
>> > > }
>> > >
>> > > $newObject = new Pretendida();
>> > > return $newObject;
>> > >
>> > > ';
>> > >
>> > > $_ = create_function('',$strClass);
>> > >
>> > > var_dump($_());
>> > >
>> > > É isso aí, no final voce terá um objeto com todas as
>> > propriedades da
>> > > classe Original ( a classe que voce quer que possui
>> > propriedades
>> > > privadas) com visibilidade pública.
>> > > Cuida que ali a gente tá criando a classe Pretendida por uma
>> > string
>> > > para o create_function().
>> > >
>> > > Falow.
>> > >
>> > > Tiago Natel de Moura
>> > > http://blog.tiagomoura-design.com.br >> > >
>> > >
>> > > On 30 out, 17:43, Giolvani <inavloigru...@gmail.com
>> > <mailto:inavloigru...@gmail.com>> wrote:
>> > >
>> > >> Olá pessoal,
>> > >>
>> > >> estou com uma duvida meio trash, mas lá vai...
>> > >>
>> > >> seguinte, existe como eu alterar a visibilidade dos
>> > atributos do meu
>> > >> objeto em tempo de execução?
>> > >>
>> > >> tenho um método que me retorna um objeto ($a) com os
>> > atributos privados
>> > >> e métodos (gets,sets) publicos, até ai tudo bem,
>> > >> mas quando eu for enviar esse objeto $a, eu preciso que ele
>> > esteja com
>> > >> os atributos todos publicos, pq o cara que vai
>> > >> pegar ele do outro lado não sabe ver get e set e sim
>> > somente o nome do
>> > >> atributo, ou seja:
>> > >>
>> > >> lá ele pega assim
>> > >> $a->nome;
>> > >>
>> > >> e não assim:
>> > >> $a->getNome();
>> > >>
>> > >> e nao tenho como alterar o outro lado de forma nenhuma, por
>> > isso
>> > >> precisava passar o objeto com os atributos publicos!!!
>> > >>
>> > >> alguém já teve esse problema??!!!
>> > >>
>> > >> abraços
>> > >>
>> > >
>> > > >
>> > >
>> > >
>> > ------------------------------------------------------------------------
>> > Achetez un nouveau PC et bénéficiez de Windows 7 dès sa sortie !
>> > En savoir plus <http://www.portable-windows.com/>
>> > --
>> > Felipe N. de Moura
>> > Desenvolvimento Web
>>> essa é uma idéia que não tinha pensando ainda... vou ver essa >>> possibilidade!!! >>> obrigado!
>>> -- >>> att. >>> Giolvani
>>> Felipe Nascimento de Moura escreveu:
>>>> ja tentou serializar mesmo, ou usar até jSon ? >>>> $x= json_encode($this);
>>>> e envia o $x pro cara ... ele deve ter uma funcao pronta pra json, sei >>>> la ... assim, somente irao os atributos, metodos não serao >>>> enviados...claro
>>>> 2009/10/31 Tiago Natel de Moura <tiago_mo...@live.com >>>> <mailto:tiago_mo...@live.com>>
>>>> Sim.
>>>> Mas ele pode usar ReflectionClass::getProperties() só para pegar >>>> as propriedades privadas e depois criar o objeto em tempo de >>>> execução. >>>> Alterar a visibilidade só no php 5.3 mesmo.
>>>> ------------------------------------------------------------------------ >>>> Date: Sat, 31 Oct 2009 23:27:06 -0200 >>>> Subject: [ PHP - Google ] Re: Alterar visibilidade >>>> From: raf...@siqueira.ws <mailto:raf...@siqueira.ws> >>>> To: listaphp@googlegroups.com <mailto:listaphp@googlegroups.com>
>>>> Opa! >>>> Com reflexão você consegue alterar a visibilidade de sua >>>> propriedade, mas a versão do PHP precisa ser 5.3. Dá uma olhada lá >>>> no php.net <http://php.net> só.
>>>> @Diego, isso é foda mesmo... é exatamento com o amf que estou >>>> tendo >>>> problema... >>>> nao quero ter que mudar todas minhas classes colocando os >>>> atributos como >>>> public...
>>>> @Tiago, tive mais ou menos essa idéia ai, mas nesse caso ai eu >>>> teria que >>>> adicionar um metodo em todas minhas classes...
>>>> então um amigo meu me falou pra usar Reflexão... e dando uma >>>> estudada >>>> meio por cima, creio que resolva meu problema!!!
>>>> se eu conseguir resolver eu falo aqui como ficou!!!
>>>> obrigado pela atenção de todos...
>>>> -- >>>> att. >>>> Giolvani
>>>> Tiago Natel de Moura escreveu: >>>> > Amigo, não dá pra mudar a visibilidade das propridades em >>>> tempo de >>>> > execução, mas voce pode criar uma nova classe em tempo de >>>> execução com >>>> > as propriedades com a visibilidade que voce deseja.
>>>> > Se voce sua PHP 5, voce pode fazer:
>>>> > class Original { >>>> > private $var1 = 1; // variaveis privadas que voce >>>> precisa >>>> > private $var2 = 2;
>>>> > public function toArrayPrivateVars() >>>> > { >>>> > return get_class_vars(get_class($this)); >>>> > } >>>> > }
>>>> > $newObject = new Pretendida(); >>>> > return $newObject;
>>>> > ';
>>>> > $_ = create_function('',$strClass);
>>>> > var_dump($_());
>>>> > É isso aí, no final voce terá um objeto com todas as >>>> propriedades da >>>> > classe Original ( a classe que voce quer que possui >>>> propriedades >>>> > privadas) com visibilidade pública. >>>> > Cuida que ali a gente tá criando a classe Pretendida por uma >>>> string >>>> > para o create_function().
>>>> >> estou com uma duvida meio trash, mas lá vai...
>>>> >> seguinte, existe como eu alterar a visibilidade dos >>>> atributos do meu >>>> >> objeto em tempo de execução?
>>>> >> tenho um método que me retorna um objeto ($a) com os >>>> atributos privados >>>> >> e métodos (gets,sets) publicos, até ai tudo bem, >>>> >> mas quando eu for enviar esse objeto $a, eu preciso que ele >>>> esteja com >>>> >> os atributos todos publicos, pq o cara que vai >>>> >> pegar ele do outro lado não sabe ver get e set e sim >>>> somente o nome do >>>> >> atributo, ou seja:
>>>> >> lá ele pega assim >>>> >> $a->nome;
>>>> >> e não assim: >>>> >> $a->getNome();
>>>> >> e nao tenho como alterar o outro lado de forma nenhuma, por >>>> isso >>>> >> precisava passar o objeto com os atributos publicos!!!
>>>> >> alguém já teve esse problema??!!!
>>>> >> abraços
>>>> -- >>>> Rafael Siqueira >>>> +55 21 8248-3030
>>>> ------------------------------------------------------------------------ >>>> Achetez un nouveau PC et bénéficiez de Windows 7 dès sa sortie ! >>>> En savoir plus <http://www.portable-windows.com/>
>>>> -- >>>> Felipe N. de Moura >>>> Desenvolvimento Web