WGuedes 0 Denunciar post Postado Maio 13, 2010 Olá Pessoal, Estou tentando adicionar informações em uma lista, pórem aparece o erro: Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\wamp\www\Trabalho11\Lista_Cliente.php on line 26 Warning: array_slice() expects parameter 1 to be array, null given in C:\wamp\www\Trabalho11\Lista_Cliente.php on line 21 Warning: array_slice() expects parameter 1 to be array, null given in C:\wamp\www\Trabalho11\Lista_Cliente.php on line 22 Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\wamp\www\Trabalho11\Lista_Cliente.php on line 26 object(Lista_Cliente)#1 (1) { ["lista":"Lista_Cliente":private]=> NULL } Está passando valores nulos: include "Teste.php"; include "Cliente.php"; class Lista_Cliente { private $lista; public function _construct(){ $this->lista=array(); } public function remover($cliente, $pos){ $anterior = array_slice ($lista,0, $pos); $posterior =array_slice ($lista,$pos +1); $mix = array_merge($anterior, $posterior); } public function add($cliente, $pos){ $antes = array_slice ($this->lista,0, $pos); $depois = array_slice ($this->lista,$pos); $novo = array($cliente); $this->lista = array_merge ($antes, $novo, $depois); } } Teste.php include "Cliente.php"; include "Lista_Cliente.php"; $lista = new Lista_Cliente(); $cliente1 = new Cliente ("Wellington", 29051987, "Orfanatrófio"); $cliente2 = new Cliente ("João",13101980,"Centro"); $cliente3 = new Cliente ("Paulo", 20021990,"Praia de Belas"); $lista->add ($cliente1,0); $lista->add ($cliente2,1); $lista->add ($cliente3,2); var_dump ($lista); As funções remover e adicionar não funcionam Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 13, 2010 $anterior = array_slice ($lista,0, $pos); $posterior =array_slice ($lista,$pos +1); A variável $lista, de dentro da sua classe, deve ser referenciada com $this. $anterior = array_slice ($this->$lista,0, $pos); $posterior =array_slice ($this->$lista,$pos +1); E tem outras coisas ai também, mas vai vendo isso primeiro. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 13, 2010 $anterior = array_slice ($lista,0, $pos); $posterior =array_slice ($lista,$pos +1); A variável $lista, de dentro da sua classe, deve ser referenciada com $this. $anterior = array_slice ($this->$lista,0, $pos); $posterior =array_slice ($this->$lista,$pos +1); E tem outras coisas ai também, mas vai vendo isso primeiro. Só um detalhezinho, André, que você esqueceu por desatenção somente, creio eu. $this->lista. // sem o cifrão à frente de lista. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 13, 2010 É mesmo hehe, ta tão frio aqui que até dificil de digitar. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 13, 2010 Sem querer criar spam no tópico, André, mas frio mesmo tá na minha cidade natal, Rio Grande - RS. Sensação térmica de 7,5 graus. :o Compartilhar este post Link para o post Compartilhar em outros sites
WGuedes 0 Denunciar post Postado Maio 13, 2010 Muito obrigado pessoal, mas o erro continua, seria um problema de includes? Está assim: Teste.php include "Cliente.php"; include "Lista_Cliente.php"; Cliente.php include "Lista_Cliente.php"; Lista_Cliente.php include "Teste.php"; include "Cliente.php"; Dessea maneira da erro Fatal error: Allowed memory size of Tirando os includes da Fatal error: Cannot redeclare class Lista_Cliente in C:\wamp\www\Trabalho11\Lista_Cliente.php on line 6 Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 13, 2010 Experimente utilizar o include_once, ao invéz do include. Da mesma forma, no require, com require_once. Outra dica seria você setar o valor inicial da propriedade $this->lista na sua própria declaração: private $lista = array(); Assim você não precisa utilizar o construtor para uma coisa desse tipo. Compartilhar este post Link para o post Compartilhar em outros sites
WGuedes 0 Denunciar post Postado Maio 13, 2010 Amigo já fiz as mudanças, porém da o erro Fatal error: Cannot redeclare class Lista_Cliente in C:\wamp\www\Trabalho11\Lista_Cliente.php on line 6 A linha 6 é class Lista_Cliente { Será que falta uma include_once ou falta de parametros? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 13, 2010 Só para desencargo de consciência, coloque aqui o código da classe Cliente. OBS: Você consegue ler o que o erro está lhe dizendo? Eu sugiro que o faça, pra poder entender. Compartilhar este post Link para o post Compartilhar em outros sites
WGuedes 0 Denunciar post Postado Maio 13, 2010 Estou tentando, mas com as includes está dando erro: Cliente.php <?php include_once "Lista_Cliente.php"; include_once "index.php"; class Cliente{ private $nome; private $data_nasc; private $endereco; public function Cliente ($nome, $data_nasc, $endereco){ $this->nome = $nome; $this->data_nasc = $data_nasc; $this->endereco = $endereco; } public function setNome($nome) { $this -> nome = $nome; } public function setData_nasc($data_nasc) { $this -> data_nasc = $data_nasc; } public function setEndereco($endereco) { $this -> endereco = $endereco; } public function getNome() { return $this -> nome; } public function getData_nasc() { return $this -> data_nasc; } public function getEndereco() { return $this -> endereco; } } ?> Lista_Cliente.php <?php include_once "Teste.php"; include_once "Cliente.php"; class Lista_Cliente { private $lista; public function _construct(){ $this->lista = array(); } public function remover($cliente, $pos){ $anterior = array_slice ($this->lista,0, $pos); $posterior = array_slice ($this->lista,$pos +1); $mix = array_merge($anterior, $posterior); } public function add($cliente, $pos){ $antes = array_slice ($this->lista,0, $pos); $depois = array_slice ($this->lista,$pos); $novo = array($cliente); $this->lista = array_merge ($antes, $novo, $depois); } } ?> Teste.php <?php //include_once "Cliente.php"; include_once "Lista_Cliente.php"; $lista = new Lista_Cliente(); $cliente1 = new Cliente ("Wellington", 29051987, "Orfanatrófio"); $cliente2 = new Cliente ("João",13101980,"Centro"); $cliente3 = new Cliente ("Paulo", 20021990,"Praia de Belas"); $lista->add ($cliente1,0); $lista->add ($cliente2,1); $lista->add ($cliente3,2); var_dump ($lista); ?> Eu só quero fazer o Teste imprimir os clientes cadastrados. vlw Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Maio 13, 2010 Você está sendo redundante. Está incluindo Index e Cliente. Em cliente você Inclui Lista e Teste, em Lista você inclui cliente e teste. Primeiro passo: Organize-se. Guarde dentro dos arquivos de classes APENAS O CONTEÚDO DELAS. Sem include, require, file_get_contents ou similares. Crie um arquivo core.php ou dependencies.php onde você referencia classe e dependência e vai fazendo os includes necessários. Você mantém a aplicação no seu controle. Por fim, seu arquivo teste.php ou index.php vai incluir APENAS a core.php, que se encarregará de todo o 'trabalho sujo'. Compartilhar este post Link para o post Compartilhar em outros sites