PHP - Array de Objetos en dos Clases

 
Vista:

Array de Objetos en dos Clases

Publicado por Maria Lorite (1 intervención) el 24/05/2019 13:20:55
Crear una aplicación en php. Para ello se tendrán que cumplir los siguientes requisitos:
-Crear una clase contacto.
-Crear una clase agenda.
-Crear un script de inicio (index.php).
La clase agenda será la responsable de crear 10 contactos.
La clase agenda será responsable de mostrar todos los contactos.

___________CLASE CONTACTO.PHP_________
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
 
class Contacto {
    private $name;
    private $surname1;
    private $surname2;
    private $telephone;
 
    function __construct($name, $surname1, $surname2, $telephone){
        $this->name = $name;
        $this->surname1 = $surname1;
        $this->surname2 = $surname2;
        $this->telephone = $telephone;
    }
 
    public function getName(){
        return $this->name;
    }
 
    public function getSurname1(){
        return $this->surname1;
    }
 
    public function getSurname2(){
        return $this->surname2;
    }
 
    public function getTelephone(){
        return $this->telephone;
    }
}

____________CLASE AGENDA.PHP_____________
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
class Agenda {
 
    public $array = [0,1,2,3,4,5,6,7,8,9];
    public $contacto;
 
    public function crear_contacto(){
        $array[0] = new Contacto("Pepe", "Garcia", "garcia", "657483920");
        $array[1] = new Contacto("Juan", "Cacho", "Perez", "678354719");
        $array[2] = new Contacto("Maruja", "Gallego", "Fernandez", "698346728");
        $array[3] = new Contacto("Ramon", "Castillo", "Martinez", "698453726");
        $array[4] = new Contacto("Paula", "Gonzalez", "Santamaria", "623456378");
        $array[5] = new Contacto("Jesus", "Lopez", "Moros", "643526728");
        $array[6] = new Contacto("Abel", "Huete", "Cabello", "6134267829");
        $array[7] = new Contacto("Isabel", "Benito", "Torres", "634897867");
        $array[8] = new Contacto("Sara", "Romero", "Martin", "689473625");
        return $array;
    }
 
    public function visualizar_contacto($contactos){
      for ($i=0; $i < count($contactos); $i++){
            echo $contactos[$i]->getName . ' ' . $contactos[$i]->getSurname1;
          }
    }
}

______________INDEX.PHP___________
1
2
3
4
5
6
7
8
<?php
 
 
require './agenda.php';
require './contacto.php';
$agenda = new Agenda();
$contactos = $agenda->crear_contacto();
$agenda->visualizar_contacto($contactos);


No se muy bien como llamar desde la clase Agenda a la función que me devuelve la variable nombre de la Clase Contacto, tengo mal la sintaxis, pero llevo toda la mañana en foros y no encuentro ningún ejemplo parecido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Array de Objetos en dos Clases

Publicado por Mauro (1036 intervenciones) el 24/05/2019 14:35:13
Para comenzar, la inicialización del array:

1
public $array = [0,1,2,3,4,5,6,7,8,9];

No aporta nada... estás sobre-escribiendo el array en el método crear_contacto().

Por otra parte, poner el array como public no es una muy buena idea, te conviene más dejarlo privado y, en todo caso, hacer un método para obtenerlo desde afuera.

De hecho, esta llamada:

1
$agenda->visualizar_contacto

No debería recibir parámetros ya que el array es parte de la clase Agenda.

Y cuidado, si alguien llama primero a visualizar_contacto el array no contendrá objetos y saltará alguna excepción...

El problema específico que tienes es, como dices, de sintaxis.

La llamada debería ser:

1
echo $contactos[$i]->getName();

Tengo un par de recursos que pueden ayudarte:

1. Un libro sobre PHP Orientado a Objetos
2. Una serie de 40 ejemplos de código PHP explicados en detalle
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar