SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: mcastro en Martes 6 de Noviembre de 2018, 21:07

Título: Manejo de CLASS en php
Publicado por: mcastro en Martes 6 de Noviembre de 2018, 21:07
Estoy aprendiendo a programar en PHP y considerando el tema de las CLASS; tengo el siguiente código:
<?php
     class Coche
     {
           protected $Modelo;
           protected $Color;
           protected $Velocidad;

           public function __construct($Modelo, $Color, $Velocidad = 0)
           {
                  $this->Modelo    = $Modelo;
                  $this->Color     = $Color;
                  $this->Velocidad = $Velocidad;
           }

           private function obtenerColor()
           {       return $this->Color;}

           private function cambiarColor()
           {       $this->Color = $Color;}

           private function Acelerar()
           {       $this->Velocidad++;}

           private function Frenar()
           {       $this->Velocidad--;}

           private function obtenerVelocidad()
           {       return $this->Velocidad;}

           public  function Datos()
           {
                   $Info = "<h1> Información acerca del coche </h1>";
                   $Info.= "Modelo: " . $this->Modelo;
                   $Info.= "<br/>Color: " . $this->obtenerColor();
                   $Info.= "<br/>Velocidad: " . $this->obtenerVelocidad();

                   return $Info;

           }
     }

     Estoy tratando de probarlo así:$Informacion = new Coche;
     $Informacion->Datos('Fiat', 'Rojo', 100).

     Me da error: Warning: Missing argument 1 for Coche::__construct(), called in C:\xampp\htdocs\Arreglos.php on line 42 and defined in C:\xampp\htdocs\Arreglos.php on line 8.

¿Me pueden ayudar?¿Qué estoy haciendo mal?

Gracias de antemano
Título: Re:Manejo de CLASS en php
Publicado por: Avalon en Miércoles 7 de Noviembre de 2018, 07:54
Hola,

Fíjate que lo que hace el método Datos es leer los atributos del coche. El método donde se hace la asignación de esos atributos es en el __construct, pero ahí no se los estás pasando (de ahí el warning).

Deberías hacerlo así:

Código: [Seleccionar]
$Informacion = new Coche('Fiat', 'Rojo', 100);
echo $Informacion->Datos();
Título: Re:Manejo de CLASS en php
Publicado por: mcastro en Miércoles 7 de Noviembre de 2018, 15:08
Gracias Avalon por tu respuesta. El que no sabe es como el que no ve. Déjame hacerlo y te comento. Saludos.