Jump to content
Fórum Script Brasil
  • 0

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


dedas

Question

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.

Edited by dedas
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 ? Edited by dedas
Link to comment
Share on other 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.

Edited by Willian Gustavo Veiga
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...