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

Tentando acessar uma lista de objetos com foreach


Danielgs

Pergunta

estou tentando acessar a seguinte lista:

Array
(
    [0] => Ponto Object
        (
            [registro:Ponto:private] => 1
            [data:Ponto:private] => 13/10/2020
            [horario:Ponto:private] => 14:55 - 12:43
            [usuario:Ponto:private] => Usuario Object
                (
                    [registro:Usuario:private] => 1
                    [nome:Usuario:private] => DANIEL GOMES SANTOS
                    [diasTrabalho:Usuario:private] => SEG A SAB
                    [horarioTrabalho:Usuario:private] => 9 AS 15H
                )

        )

    [1] => Ponto Object
        (
            [registro:Ponto:private] => 2
            [data:Ponto:private] => 13/10/2020
            [horario:Ponto:private] => 16:13 - 15:01
            [usuario:Ponto:private] => Usuario Object
                (
                    [registro:Usuario:private] => 2
                    [nome:Usuario:private] => FERNANDA SANTOS
                    [diasTrabalho:Usuario:private] => SAB
                    [horarioTrabalho:Usuario:private] => 10 AS 19H
                )

        )

    [2] => Ponto Object
        (
            [registro:Ponto:private] => 3
            [data:Ponto:private] => 13/10/2020
            [horario:Ponto:private] => 16:12 - 15:18
            [usuario:Ponto:private] => Usuario Object
                (
                    [registro:Usuario:private] => 3
                    [nome:Usuario:private] => LARISSA SANTOS
                    [diasTrabalho:Usuario:private] => SEG-SEX
                    [horarioTrabalho:Usuario:private] => 9 AS 15H
                )

        )

    [3] => Ponto Object
        (
            [registro:Ponto:private] => 4
            [data:Ponto:private] => 13/10/2020
            [horario:Ponto:private] => 16:11 - 15:29
            [usuario:Ponto:private] => Usuario Object
                (
                    [registro:Usuario:private] => 4
                    [nome:Usuario:private] => CAIO SANTOS
                    [diasTrabalho:Usuario:private] => SEG A SEX
                    [horarioTrabalho:Usuario:private] => 9 AS 15H
                )

        )

)

Consigo acessar os dados da tabela Ponto da seguinte forma:

<?php
        
        foreach($lista as $item):    
     ?>

         <tr>
             <td> <?= $item->getRegistro();?> </td>
             <td> <?= $item->getData();?> </td>
             <td> <?= $item->getHorario();?> </td>
             <td>  </td>
             <td><a href="editar.php?reg= <?= $ponto->getRegistro()?>">[ Editar ]</a>
             </td>
             <td><a href="excluir.php?reg= <?= $ponto->getRegistro()?>" onclick="return confirm('Tem certeza que deseja excluir esse usuário?') ">[ Excluir ]</a></td>
             
         </tr>

     <?php
         endforeach;
     ?>

Porém na td que esta vazia gostaria de acessar o array com o nome do usuario já tentei várias coisas mas diz variavel usuario indefinida lá na classe Ponto.php.

nessa classe tem o atributo Usuario $usuario; que é onde recebo pelo set os dados do usuario dentro da classe ponto

tentei <td> <?= $item->getUsuario('nome') ?> </td> 

Sou iniciante e não sei se consegui ser claro em minhas explicaçoes.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu também apanho muito com as classes. Faz três anos que estudo o PHP, e eu apanho muito.

Mas eu sei que não basta criar a propriedade usuário na classe. Para você usar o método getUsuário, você precisa definir esse método na classe, assim:

<?php
class ponto {
  public $usuario;
  function setUsuario($nome){$this->usuario=$nome;}
  function getUsuario() {return strtolower($this->usuario);}
}
$array=
[0 => ["registro" => 1,"data" => "13/10/2020","horario"=> "14:55 - 12:43",
"nome" => "DANIEL GOMES SANTOS",],
1 => ["registro" => 2,"data" => "13/10/2020","horario" => "16:13 - 15:01",
"nome" => "FERNANDA SANTOS"],
2 => ["registro" => 3,"data" => "13/10/2020","horario" => "16:12 - 15:18",
"nome" => "LARISSA SANTOS"],
3 => ["registro" => 4,"data" => "13/10/2020","horario" => "16:11 - 15:29",
"nome" => "CAIO SANTOS"]];
$lista=(json_decode(json_encode($array)));
$ponto=new ponto();
echo "<table>";
foreach($lista as $item): 
  $ponto->setUsuario($item->nome); 
  $usuario=$ponto->getUsuario();
  echo "
  <tr>
  <td>  $item->registro
  <td>  $item->data
  <td>  $item->horario
  <td>  $usuario
  <td><a href=?editar=$item->registro>[ Editar ]</a>
  <td><a href=?excluir=$item->registro>[ Excluir ]</a></td>";
endforeach;
echo "</table>";

Nesse exempo, coloquei todos os nomes dos colaboradores em maíusculo no $array, mas o

$ponto->getUsuario( ) vai retornar tudo em minúsculo. O mais chato é que você pode pode colocar uma variável qualquer ou até um item de um array dentro de aspas duplas, mas o método da classe, o PHP não aceita!

Editado por Frank K Hosaka
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...