Cómo funciona la especificación de control de acceso a métodos y atributos en PHP5
Cuando se crea una nueva clase en PHP se puede especificar el nivel de acceso que tendrá cada método o atributo. En PHP5 existen tres modificadores de acceso:
Los elementos declarados como Public son accesibles tanto desde fuera como desde dentro de la clase.
El atributo marca es público y por lo tanto es visible desde fuera de la clase.
Los elementos declarados como Private son accesibles sólo desde la misma clase donde fueron definidos.
Si ejecutamos el código obtendremos el siguiente error:
Fatal error: Cannot access private property Vehiculo::$marca
El atributo marca no es visible fuera de la clase en la que se definió.
Los elementos declarados como Protected son accesibles desde la misma clase donde fueron definidos y en sus subclases.
Si ejecutamos el código obtendremos el siguiente error
Fatal error: Cannot access protected property Coche
Producido por la línea que contiene este código:
echo $micoche->marca;
Este error sucede por utilizar el atributo marca fuera de la clase Vehículo y quedar así fuera de su visibilidad. En cambio el uso de este atributo en la clase Coche y Vehículo es correcto.
Los métodos o atributos sin ninguna de las declaraciones (public, private o protected) por defecto serán public.