Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

#eclipse

PHP Orientado a Objetos

Recommended Posts

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

?

 

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

#netbeans, explicar isso n deu pra entender bem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

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

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

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

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

$$pessoa

 

oq siginifica $$ na varivavel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.