En lo personal, pienso que el tema de herencia debió de haber sido el primer tema a explicar antes de meternos con el resto de temas porque muchas cosas hacen referencia de alguna manera a la herencia. Pero trataré de explicarlo de una mejor manera:
public: Es una propiedad publica, a la cual puedo acceder desde cualquier parte de mi código y puedo modificarla sin problemas:
<?php
class User {
public $name;
}
$pablito = new User;
$pablito->name = "Pablito";
?>
Esto es posible porque $name es una propiedad publica, por tanto, puedo acceder desde fuera de la clase, la clase abarca desde la llave de apertura hasta la llave de cierre de la clase.
protected: Esta propiedad es exclusiva de PHP, basicamente, hace que esta propiedad NO pueda ser accedida desde fuera de mi clase, pero SI puede ser accedida desde cualquier otra clase que herede a mi clase, ¿Qué es herencia? No te preocupes, ya casi llegamos a ese tema, pero que el nombre te vaya dando una idea, por tanto, este ejemplo:
<?php
class User {
protected $name;
}
$pablito = new User;
$pablito->name = “Pablito”;
?>
Mandaría un error, pues $name es protected y no puedo llamarla desde fuera de la clase, pero este otro ejemplo:
<?php
class User {
protected $name;
}
class Pablito extends User{
public function poner_nombre($nombre){
$this->name = $nombre;
}
}
$pablito = new Pablito;
$pablito->poner_nombre("Pablito");
?>
Si funcionaría, pues las clases que heredan de mi clase SI pueden acceder.
private: Este nos indica que nada, absolutamente nada que NO esté dentro de mi clase va a poder acceder a esa propiedad o método, ni aunque la heredes, esa propiedad va a estar disponible única y estrictamente dentro de mi clase, por lo que el ejemplo anterior daría error (Si hubiésemos puesto private $name), pero el siguiente ejemplo funcionaría a la perfección:
<?php
class User {
protected $name;
public function poner_nombre($nombre) {
$this->name = $nombre;
}
}
$pablito = new User;
$pablito->poner_nombre("Pablito");
?>
De esta forma y con ejemplos creo que se entiende mejor lo que es el alcance 😄
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?