PHP - No imprime el mensaje

 
Vista:
Imágen de perfil de Juan Camilo
Val: 107
Ha disminuido su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

No imprime el mensaje

Publicado por Juan Camilo (22 intervenciones) el 18/05/2020 07:12:02
Colegas, cordial saludo
Actualmente me encuentro aprendiendo sobre POO y pues quisiera que por favor me ayudaran a determinar ¿por qué cuando ejecuto el siguiente código no imprime nada?

1
2
3
4
5
6
7
8
9
10
class Ejercicio1 {
    public $edadp;
    public function evaluaredad(int $edadp){
        if(($this->edadp>0)&&($this->edadp<=5)){
            echo 'La edad de '.$this->edadp.' corresponde a un Infante.';
        }
    }
}
$ecc1=new Ejercicio1();
$ecc1->evaluaredad(4);

Agradezco la ayuda que me puedan brindar.
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No imprime el mensaje

Publicado por javier (546 intervenciones) el 18/05/2020 07:48:00
Hola

1 cuando declaras la funcion evaliaredad obligas a pasarle un parametro que despues no usas en la funcion

por que no tiene nada que ver

public $edadp que se hace referencia a ella dentro de la clase como $this->edadp y no como $edadp


public function evaluaredad( $edadp){ <----------aqui obligas a la funcion a usar ese parametro y no lo usas dentro de ella estas usando

$this->edadp cuando tendria que usar $edadp

te faltaria ponerle un constructor, es opcional, si no quieres no lo pongas

mira asi estaria bien tu clase:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
class Ejercicio1 {
 
    public  $edadp; // esta variable se llamara dentro de la clase como $this->edadp;
 
    //si pones $edad = ''   haces que no sea obligatorio pasarle una edad a la funcion evaluaredad (debes pasar el valor a la funcion aunque en esta clase es obligatorio pasarle un parametro pues no tiene un constructor la clase)
    public function evaluaredad($edad =''){
 
        if ($edad != '') $this->edadp = $edad;
 
        if( ($this->edadp>0)&&( $this->edadp<=5)){
            echo 'La edad de '.$this->edadp.' corresponde a un Infante.';
        }
    }
}
$ecc1=new Ejercicio1();
$ecc1->evaluaredad(4);

y ahora un poco mejorada para que la clase haga algo si la edad es mayor que 4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
class Ejercicio1 {
 
    public  $edadp;
 
    //si pones $edad = ''   haces que no sea obligatorio pasarle una edad a la funcion evaluaredad
    public function evaluaredad($edad =''){
 
        if ($edad != '') $this->edadp = $edad;
 
        if( ($this->edadp>0)&&( $this->edadp<=5)){
            echo 'La edad de '.$this->edadp.' corresponde a un Infante.';
        }else{
            echo 'La edad de '.$this->edadp.' no corresponde a un Infante.';
        }
    }
}
$ecc1=new Ejercicio1();
$ecc1->evaluaredad(10);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

No imprime el mensaje

Publicado por javier (546 intervenciones) el 18/05/2020 08:09:58
yo tu clase la haria asi: y no uses ( int $variable) te dara error ya evalua PHP que tipo de variable será, a demas que ya sabe que ha de ser un integer

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
class Ejercicio1 {
 
    public  $edadp;
 
 
    public function __construct( $_edad='')//no es obligatorio pasar el parametro al hacerlo igual a vacio
    {
        $this->edadp = $_edad;
    }
 
    //si pones $edad = ''   haces que no sea obligatorio pasarle una edad a la funcion evaluaredad
    public function evaluaredad(  $edad =''){
 
        if ($edad != '') $this->edadp = $edad;
 
        if( ($this->edadp>0)&&( $this->edadp<=5)){
            echo 'La edad de '.$this->edadp.' corresponde a un Infante.';
        }else{
            echo 'La edad de '.$this->edadp.' no corresponde a un Infante.';
        }
    }
}
$ecc1=new Ejercicio1();
$ecc1->evaluaredad(4);//pasas el parametro a la funcion de la clase
echo '<br>';
//otro ejemplo de uso
 
$ecc1=new Ejercicio1(10); //pasas el parametro al constructor de la clase
$ecc1->evaluaredad();

Te has dado cuenta de tus errores?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar