Ir para conteúdo
Fórum Script Brasil
  • 0

[RESOLVIDO]Mais uma dúvida com relação a sintaxe...


dedas

Pergunta

Galerinha,

Estou eu trabalhando em um projeto e me deparo com esta situação:

public function mAtualizar($c_id,$status,$nome,$email,$n_publicacoes){
         #$checkLogin = parent::Seleciona("SELECT * FROM ".self::TB_ADMIN." WHERE     login='".$login."' AND usuario_idx<>'".$u_id."'");

         if($this->set_pass != "1"){
             return false;
         } else {
             $this->upd_pass = "";
             if ($this->set_pass == "1") { $this->upd_pass = "senha = '".$this->senha."',"; }

             $res = parent::atualiza("UPDATE ".self::TB_CLIENTES."
                                             SET
                                                 status = '".$this->status."',
                                                 nome = '".$this->nome."',
                                                 email = '".$this->email."',
                                                 n_publicacoes = '".$this->n_publicacoes."',
                                                 ".$this->upd_pass."
                                             WHERE
                                                 cliente_idx = ".$c_id);

             if($res == true){
                 return true;
             } else {
                 return false;
             }
         }
     }
Minha dúvida é: Porque a as variáveis que estão como parâmetros da função estão sendo chamadas como se fossem parâmetros da classe ? Exemplo: Essa linha:
nome = '".$this->nome."',
Era pra ser assim:
nome = '".$nome."',

Correto ? Ou tanto faz ?

p.s: essa função está dentro de uma classe.

Editado por dedas
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

De acordo com o manual do PHP

Uma pseudo variável, $this, está disponível quando um método é chamado dentro de um contexto de objeto
Ou seja, para que ele possa "chamar" estas propriedades, elas teriam que ter sido setadas dentro da classe ou na classe mãe. Concorda ? Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

Discordo. Hehehe :)

Acho que agora entendi sua questão.

Se você escrever "$this->banana = 'nanica';" em qualquer método sem declarar a propriedade (ou atributo, como preferir) $banana (public|protected|private $banana) na classe nada de errado vai acontecer. A propriedade será automaticamente adicionada ao objeto. Eu gosto de declarar todas as propriedades das classes antes de usa-las.

Um abraço.

Editado por Willian Gustavo Veiga
Link para o comentário
Compartilhar em outros sites

  • 0

Apenas para complementar:

<?php
class UmaClasse
{
    public function __construct()
    {
        $propriedades = range('a', 'c');
        $valores = range(1, 3);
        $i = 0;
        while ($i < 3) {
            $this->{$propriedades[$i]} = $valores[$i];
            $i++;
        }
    }
}

$umObjeto = new UmaClasse();
print_r($umObjeto);
Terá como saída:
UmaClasse Object
(
    [a] => 1
    [b] => 2
    [c] => 3
)

Percebeu como as propriedades foram criadas dinamicamente? Só criei este exemplo para mostrar como funciona, NÃO RECOMENDO CRIAR PROPRIEDADES SEM DEFINI-LAS NA CLASSE (exceto em casos excepcionais). Fica complicado fazer o debug quando você cria propriedades assim.

Espero ter ajudado.

Um abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...