#eclipse 1 Denunciar post Postado Outubro 24, 2012 Uma dúvida, como eu faço para criar um objeto de acordo com que a pessoa digitar ? Ex: Tenho meu objeto Pessoa ! Então criei um formulário e peguei o nome da pessoa Felipe aê na hora de criar o objeto $felipe = new Pessoa; como fazer isso de forma automática ??? Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Outubro 24, 2012 ? tente ser mais claro por favor. mais não tem muito segredo, é só cria a instancia do objeto e setar as propriedades ou métodos depende do como você vai trabalhar. Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 24, 2012 #netbeans, explicar isso n deu pra entender bem. Compartilhar este post Link para o post Compartilhar em outros sites
#eclipse 1 Denunciar post Postado Outubro 24, 2012 O nick #eclipse não é por causa do IDE KKKK Tipo, já tenho um objeto chamado Pessoa ! E tenho um formulario pedindo o nome ! Digite seu nome: .... Aê quando eu pegar o nome tipo "pedro" Automáticamente cria uma variável chamada $pedro que vai criar o objeto Pessoa $pedro = New Pessoa; Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Outubro 24, 2012 não é automaticamente amigo. imagine assim: class pessoa{ private $nome; public function __construct($nome){ $this->nome = $nome; echo "{$this->nome} criada com sucesso"; } } $nome = $_POST['nome']; $pessoa = new Pessoa($nome); ai ele retorna Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 24, 2012 e como você vai fazer pra manipular o objeto depois, pq nem o nome da variavel você sabe... Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Outubro 24, 2012 Se a sua variável vai receber uma instancia da classe Pessoa, o mais correto é ela se chamar $pessoa. Como o próprio nome já diz, uma variável é "variável", então não faz muito sentido ela ter um nome próprio de uma pessoa. Compartilhar este post Link para o post Compartilhar em outros sites
Vadio 13 Denunciar post Postado Outubro 24, 2012 $txt = 'pessoa'; eval("$".$txt." = new Person;"); echo $pessoa; Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Outubro 25, 2012 está tentando criar um invariável.. isso sim.. heheeh Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Outubro 25, 2012 estou apredendo pdo entao seria mais ow menos assim? index.php $pessoa = new Pessoa(); $pessoa->nome="Marcos"; $pessoa->idade="20"; $pessoa->sexo="Masculino"; $pessoa->exibir(); class.php class Pessoa{ public $nome; public $idade; public $sexo; public function exibir(){ echo "Nome: ".$this->nome; echo "Idade: ".$this->idade; echo "Sexo: ".$this->sexo; } Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Outubro 25, 2012 Acho que quis dizer POO. o básico é isso, o grande problema é que existem regras e alguns conceitos básicos. de uma olhada aqui: http://forum.imasters.com.br/forum/159-curso-de-php/ certamente depois disso que meu pensamento conseguiu acompanhar o OO. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Outubro 25, 2012 Vamos voltar ao problema original. Você quer criar uma variável a partir do valor de outra. Isso se chama variáveis variáveis. Pode não fazer sentido para muitas coisas, mas é um ponto bem importante quando em uma Parameterized Factory. Se sua variável vier como um parâmetro GET, ficaria assim: $name = ( isset( $_GET['name'] ) && ! empty( $_GET['name'] ) ? $_GET['name'] : 'default' ); $$name = new Person; class Person {} Se você depurar isso: var_dump( $name, $$name, $default ); Receberá: string 'default' (length=7) object(Person)[1] object(Person)[1] E se você quiser ter certeza de que $$name e $default são o mesmo objeto: var_dump( spl_object_hash( $$name ) == spl_object_hash( $default ) ); Note que usei $default porque como não passei um valor via GET o padrão foi assumido (pura preguiça :P). Agora o ponto que realmente tange o escopo do tópico é que as variáveis variáveis além de serem usadas dinamicamente elas são criadas dinamicamente. Ou seja, você JAMAIS vai ter no seu código $felipe, $bruno, $papaiNoel instanciando o objeto Person e sim o que foi mostrado acima. Resumindo, o que você pretende fazer ou não foi bem explicado ou realmente não faz sentido algum. Seu código vai instanciar um objeto Person e ponto. Então, através desse objeto você popula as informações para que não tenha propriedades públicas que violam o encapsulamento. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 25, 2012 A questão de possuir o nome de uma variável dependendo do que ela representa, se chama variables variable (variáveis variáveis ou variáveis variantes). No seu caso, não faz o menor sentido. Pois se você possuir por exemplo: $nome = 'Gabriel'; $pessoa = new Pessoa(); $pessoa->setNome($nome); Não faz o menor sentido fazer assim: $nome = 'Gabriel'; $$nome= new Pessoa(); $$nome->setNome($nome); Diferente de quando você já possuir variáveis e deseja que valores, que podem ser de diferentes origens e/ou possuir valores diferentes, sejam distribuídos dentro dessas variáveis. Por exemplo, eu quero separar entre professor e aluno, que estão em um vetor que eu possuo, em dois vetores. O vetor: $pessoas = array( array('Gabriel Heming' , 'aluno'), array('Fulano da Silva' , 'professor'), array('Ciclano Souza' , 'professor'), array('Beltrano Santos' , 'aluno') ); Eu já possuo os vetores: $aluno = array(); $professor = array(); Agora vou separar as pessoas: foreach($pessoas AS $pessoa) { if($pessoa[1] == 'professor') { $professor[] = $pessoa[0]; } else { $aluno[] = $pessoa[0]; } } Esse código de cima, é funcional, e separa entre alunos e professores, mas existe uma forma que resolve o mesmo problema em apenas uma linha dentro da iteração: foreach($pessoas AS $pessoa) { $$pessoa[1] = $pessoa[0]; } Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 25, 2012 $$pessoa oq siginifica $$ na varivavel. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 25, 2012 Significa que o nome da variável será o conteúdo (String) da variável pessoa. No caso, se a variável $pessoa for: $pessoa = 'Gabriel'; Isso: $$pessoa; É o mesmo que : $Gabriel; Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Outubro 25, 2012 valeuuu. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Outubro 25, 2012 Alguém não leu as últimas respostas do tópico :P $$ caracteriza as variáveis variáveis ou como apontado pelo Gabriel, variáveis variantes. O primeiro cifrão é a definição da variável, como qualquer outra. O segundo cifrão é a referência à outra variável anteriormente definida. Em tempo de execução esse segundo cifrão será analisado e terá sua definição substituída pelo valor devido. Ex: Mas como há um outro cifrão antecedendo-o, o que acontece na verdade é a criação de uma nova variável cujo nome será o valor da outra variável. Confuso né? Mas dá uma olhada na primeira parte da minha resposta anterior que você entende. Resumidamente é a possibilidade de criar variáveis sem definir explicitamente um nome ou definir um nome hora será uma cosia e hora será outra. Compartilhar este post Link para o post Compartilhar em outros sites