Setters y getters, diferentes formas

Con funciones:

 class Coche{
            private $marca;
            private $modelo;
            private $velocidad;
            
            //Crear las funciones que nos permitan poner y obtener valores
            //En el caso de la velocidad el valor permitido está entre 50 y 300
            //En el caso de marca y modelo comprobar que no esté vacío
            
            function setMarca($marca){
                if (!empty($marca)){
                    $this->marca=$marca;
                }
            }
            function setModelo($modelo){
                if (!empty($modelo)){
                    $this->modelo=$modelo;
                }
            }
            function setVelocidad($velocidad){
                if ($velocidad>=50 && $velocidad<=300){
                    $this->velocidad=$velocidad;
                } else{
                    throw new Exception("La velocidad debe estar entre 50 y 300");
                }
            }
            
            function getMarca(){
                return $this->marca;
            }
            function getModelo(){
                return $this->modelo;
            }
            function getVelocidad(){
                return $this->velocidad;
            }
        }
        
        $seat=new Coche();
        $seat->setMarca("Seat");
        $seat->setModelo("Panda");
        $seat->setVelocidad(180);
        print_r($seat);

Con __get y __set

     <?php
        class Coche {

            private $marca;
            private $modelo;
            private $velocidad;

            //Crear las funciones que nos permitan poner y obtener valores
            //En el caso de la velocidad el valor permitido está entre 50 y 300
            //En el caso de marca y modelo comprobar que no esté vacío

            function __get($name) {
                if (property_exists('Coche', $name)) {
                    return $this->$name;
                }
            }

            function __set($name, $value) {
                if ($name == "velocidad") {
                    if ($value >= 50 && $value <= 300) {
                        $this->velocidad = $value;
                    } else {
                        throw new Exception("La velocidad debe estar entre 50 y 300");
                    }
                } else {
                    if (!empty($value) && property_exists('Coche', $name)) {
                        $this->$name = $value;
                    }
                }
            }

        }

        $seat = new Coche();
        $seat->marca = "Seat";
        $seat->modelo = "Panda";
        $seat->velocidad = 180;
        $seat->color="rojo";
        echo $seat->modelo;
        echo $seat->color;
        print_r($seat);

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos