Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Dêem uma olhada no código abaixo.
Criei uma classe Pessoa na qual quero armazenar o(s) telefone(s) de uma pessoa.
Caso 1: a pessoa pode ter apenas 1 número de telefone.
Caso 2: a pessoa pode ter MAIS de 1 número de telefone, pode ter vários.
Quero poder passar no parâmetro do meu método setTelefone($value):
Quando passo um array, não estou conseguindo guardar os valores, pois dá este erro:
Notice: Array to string conversion in C:\Inetpub\wwwroot\propriedade-array.php on line 28
public function setTelefone($Telefone)
{
if (is_array($Telefone))
$this->$Telefone = $Telefone; # <----------------- # Como resolver? // like array
else
$this->Telefone = $Telefone; # aqui funciona // like string
}
Para ver o código rodando, acesse o link http://antonioaugusto.com.br/testes/propriedade-array.php.
Para ver o código fonte:
<?
function depurar($var, $continue = true)
{
echo '<pre>';
print_r($var);
echo '</pre>';
if(!$continue) exit();
}
class Pessoa
{
return $this->Telefone;
}
public function setTelefone($Telefone)
{
if (is_array($Telefone))
{
echo '<p style="color:red">Veio como array</p>';
# Se vier um array, tudo ok.
# ERRO NESTA LINHA 28 - ABAIXO
$this->$Telefone = $Telefone; # <----------------- # Como resolver?
# ERRO NESTA LINHA 28 - ACIMA
}
else
{
echo '<p style="color:green">Veio como string</p>';
# Se vier uma string, transformar em array.
$this->Telefone = array($Telefone);
}
}
}
echo '<h2>TESTE COM STRING - INICIO - STATUS = <span style="color:green">OK</span></h2>';
$fone1string = '(11) 9988-7766';
echo '<strong>Valor string que vou passar:</strong> ';
depurar($fone1string);
$p1 = new Pessoa();
$p1->setTelefone($fone1string);
echo '<strong>Teste passando string retornou:</strong> '. $p1->getTelefone() .'<br /><strong>print_r($p1->getTelefone()): </strong>';
depurar($p1->getTelefone());
echo "<hr />";
echo '<h2>TESTE COM ARRAY - INICIO - STATUS = <span style="color:red">COM PROBLEMA</span></h2>';
$fone2array = array('(22) 1111-1111', '(22) 2222-2222');
echo '<strong>Valor array que vou passar:</strong> ';
depurar($fone2array);
$p2 = new Pessoa();
$p2->setTelefone($fone2array);
echo '<strong>Teste passando array retornou:</strong> '. $p2->getTelefone() .'<br /><strong>print_r($p2->getTelefone()): </strong>';
depurar($p2->getTelefone());
echo '<strong style="color:red; border:2px dashed darkred; padding:5px;">Aqui acima meu retorno deveria ser um array com posicoes.</strong>';
Carregando comentários...