Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom estou querendo fazer a seguinte comparacao em ternario, mais dá erro :
public $comparacao = $banco == "despesas";
public $sql = $this->comparacao ? $this->query[$this->banco]["query"] : $this->query[$this->banco];
public $double = $this->comparacao ? true : false;
Da certo fazer isso em ternário ou so em if?
Tambêm pensei nisso mais estava em duvida então eu devo usar if correto ?
>
Tambêm pensei nisso mais estava em duvida então eu devo usar if correto ?
Você pode fazer isso, mas dentro de um método
class ...
{
public $comparacao;
public $sql;
public $double;
public function __construct()
{
$this->comparacao = $banco == "despesas";
$sql = $this->comparacao ? $this->query[$this->banco]["query"] : $this->query[$this->banco];
$double = $this->comparacao ? true : false;
// Nota, esta última linha é totalmente redundante.
// Pode ser feito assim $double = $this->comparacao;
// Ou melhor ainda, troque a primeira linha deste método por:
// $this->comparacao = $double = $banco == "despesas";
}
}Releia essa parte:
Você só pode declarar valores explícitos
Mas o que são valores explícitos?
São aqueles que você atribui diretamente à variável, sem intermédio de outra variável, método ou função.
Há, um detalhes a mais. Somente podem ser declarados valores de tipos primitivos. Exceto Objetos, pois necessitam ser instanciados, e resources, pois eles são retornados à partir de uma função.
Vamos ao exemplos.
Valores explícitos:
private $int= 1;
private $string = 'String';
private $float = 15.756;
private $array = array(1 => 'Gabriel');
private $boolean = TRUE;
private $null = NULL;
Qualquer coisa fora o que está acima, não irá funcionar.
O exemplo do @Evandro Oliveira mostra a forma correta de atribuir valores (não explícitos) aos atributos de uma classe.
class ...
{
public $comparacao;
public $sql;
public $double;
public function __construct()
{
$this->comparacao = $banco == "despesas";
$sql = $this->comparacao ? $this->query[$this->banco]["query"] : $this->query[$this->banco];
$double = $this->comparacao ? true : false;
// Nota, esta última linha é totalmente redundante.
// Pode ser feito assim $double = $this->comparacao;
// Ou melhor ainda, troque a primeira linha deste método por:
// $this->comparacao = $double = $banco == "despesas";
}
}
Como assim evandro trocar a primeira linha por
$this->comparacao = $double = $banco == "despesas";
? iria ficar
class ...
{
public $comparacao;
public $sql;
public $double;
public function __construct()
{
$this->comparacao = $double = $banco == "despesas"
$sql = $this->comparacao ? $this->query[$this->banco]["query"] : $this->query[$this->banco];
$double = $this->comparacao ? true : false;
// Nota, esta última linha é totalmente redundante.
// Pode ser feito assim $double = $this->comparacao;
// Ou melhor ainda, troque a primeira linha deste método por:
}
}>
class ...
{
public $comparacao;
public $sql;
public $double;
public function __construct()
{
$this->comparacao = $double = $banco == "despesas"
$sql = $this->comparacao ? $this->query[$this->banco]["query"] : $this->query[$this->banco];
// Agora você pode apagar essa linha debaixo. $double já recebeu um valor...
$double = $this->comparacao ? true : false;
}
}
nota sobre o post do @Gabriel Heming:
Os valores dentro de Array() seguem as mesmas regras. Isso quer dizer que você não pode tentar burlar com
public $var = Array('x' => $x);
Ops eu fiz isso mais deu um erro :
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in C:\xampp\htdocs\query.class.php on line 33
Linha 33:
$this->comparacao = $double = $banco == "despesas";
Pois logo alterei para :
$double = $banco == "despesas";
E deu
Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\query.class.php on line 33
Na sua versão, no post #6, falta um ponto-e-vírgula no final dessa linha.
Você está fazendo isso na declaração das variáveis da classe?
Isso é impossível. Você só pode declarar valores explícitos e não valores através de variáveis ou comparações.