
Algunas preguntas sobre OOP...
Publicado por facundo (185 intervenciones) el 03/08/2017 17:33:24
Buenas gente, como pueden ver estoy apriendiendo php orientado a objetos, estoy con un ejercicio y hay una cosa que no me sale, me vendria muy bien un poco de su ayuda para poder entender bien el codigo, desde ya muchas gracias. Abajo del codigo les explico que es lo que no sale.. Les pongo todo el codigo para que puedan entenderlo,parece mucho pero no tiene muchas vueltas.
Index.php:
cocheEscolar.php:
Niño.php:
Bueno, la primer duda me surge en la funcion estaLleno() de la clase cocheEscolar, no entiendo que es "::self", busque info pero no entiendo como relacionarla con esto...Le hice un var_dump a lo que retorna esa funcion y es un booleano, porque boolean? si no hay ningun IF......
Y la segunda pregunta es, en la clase "Niño" tengo la funcion __toString() que me retorna el nombre del niño, y para retornar la direccion tengo la funcion verDireccion() el problema es que si desde el Index.php quiero imprimir la direccion en pantalla con un echo no puedo me tira un error (algo asi como que no puede convertir un objeto en un string).. Pero claro, si en el metodo __toString() de la clase Niño retorno la direccion, una vez ejecutado el codigo me tira este error:
Recoverable fatal error: Method Niño::__toString() must return a string value in C:\xampp\htdocs\colegio\cocheEscolar.php on line 39
que no entiendo porque me tira ese error si en la linea 39 de cocheEscolar esta la funcion buscarNiño() que no tiene nada que ver con el metodo __toString() de la clase Niño o si ?
Bueno espero que puedan ayudarme, y si no entendieron bien lo que planteo avisen que lo trato de explicar distinto. Saludos.
Index.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
require_once 'Escuela.php';
require_once 'Niño.php';
require_once 'cocheEscolar.php'; ?>
<pre>
<?php
$niño = new Niño('facu','av2-4252');
$niño1 = new Niño('fiama','direccion2');
$niño2 = new Niño('fraco','direccion3');
$niño3 = new Niño('emilia','direccion4');
$niño4 = new Niño('martin','direccion5');
$niño5 = new Niño('maria','direccion7');
$niño6 = new Niño('juan','direccion8');
$coche1 = new cocheEscolar('barrio1','abc123');
if ($coche1->estaLleno()==false) {
$coche1->setAlumnoCoche($niño);
}
if ($coche1->estaLleno()==false) {
$coche1->setAlumnoCoche($niño1);
}
if ($coche1->estaLleno()==false) {
$coche1->setAlumnoCoche($niño2);
}
if ($coche1->estaLleno()==false) {
$coche1->setAlumnoCoche($niño3);
}
if ($coche1->estaLleno()==false) {
$coche1->setAlumnoCoche($niño4);
}
if ($coche1->estaLleno()==false) {
$coche1->setAlumnoCoche($niño5);
}
if ($coche1->estaLleno()==false) {
$coche1->setAlumnoCoche($niño6);
}
if ($coche1->estaLleno() == true) {
echo 'El autobus ya esta lleno <br>';
}
echo $coche1->buscarNiño('facu');
//var_dump($coche1->getNiños()) ;
echo 'direccion: ';
var_dump($niño->verDireccion());
?>
</pre>
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
32
33
34
35
36
37
38
39
40
41
42
<?php
Class cocheEscolar
{
private $barrio;
private $matricula;
const LIMITE_CAPACIDAD = '5';
private $alumnos = array();
public function __construct($barrio,$matricula)
{
$this->barrio = $barrio;
$this->matricula = $matricula;
}
public function verMatricula()
{
return $this->matricula;
}
public function estaLleno()
{
return $lleno = count($this->alumnos) >= self::LIMITE_CAPACIDAD;
}
public function setAlumnoCoche($alumno)
{
//if (estaLleno() == false) {
$this->alumnos[] = $alumno;
//}
}
public function getNiños()
{
return $this->alumnos;
}
public function buscarNiño($nombre)
{
foreach ($this->alumnos as $alumno) {
if ($alumno == $nombre) {
return 'El alumno/a ' . $alumno . ' esta en el autobus con la matricula "' . $this->matricula . '"<br>';
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require_once 'Casa.php';
class Niño
{
private $nombree;
public function __construct($nombree,$direccion)
{
$this->direccion = new Casa($direccion);
$this->nombree=$nombree;
}
public function __toString()
{
return $this->nombree;
}
public function verDireccion()
{
return $this->direccion;
}
}
Bueno, la primer duda me surge en la funcion estaLleno() de la clase cocheEscolar, no entiendo que es "::self", busque info pero no entiendo como relacionarla con esto...Le hice un var_dump a lo que retorna esa funcion y es un booleano, porque boolean? si no hay ningun IF......
Y la segunda pregunta es, en la clase "Niño" tengo la funcion __toString() que me retorna el nombre del niño, y para retornar la direccion tengo la funcion verDireccion() el problema es que si desde el Index.php quiero imprimir la direccion en pantalla con un echo no puedo me tira un error (algo asi como que no puede convertir un objeto en un string)
1
echo $niño->verDireccion();
Recoverable fatal error: Method Niño::__toString() must return a string value in C:\xampp\htdocs\colegio\cocheEscolar.php on line 39
que no entiendo porque me tira ese error si en la linea 39 de cocheEscolar esta la funcion buscarNiño() que no tiene nada que ver con el metodo __toString() de la clase Niño o si ?
Bueno espero que puedan ayudarme, y si no entendieron bien lo que planteo avisen que lo trato de explicar distinto. Saludos.
Valora esta pregunta


0