Foros del Web » Programando para Internet » PHP »

POO - Criterio para utilizar public, protected o private ?

Estas en el tema de POO - Criterio para utilizar public, protected o private ? en el foro de PHP en Foros del Web. Hola, la web ewstá plagada de explicaciones sobre las DIFERENCIAS entre public, protected o private sin embargo no logro hallar explicaciones aacerca de cuando utilizar ...
  #1 (permalink)  
Antiguo 20/07/2020, 06:19
SLD
 
Fecha de Ingreso: diciembre-2013
Mensajes: 121
Antigüedad: 10 años, 4 meses
Puntos: 6
POO - Criterio para utilizar public, protected o private ?

Hola,

la web ewstá plagada de explicaciones sobre las DIFERENCIAS entre
public, protected o private
sin embargo no logro hallar explicaciones aacerca de cuando utilizar
public, protected o private

Todos los textos y ejemplos que he hallado hablan de

https://www.php.net/manual/es/langua...visibility.php

pero quisiera saber las razones, criterios a tener en cuenta para optar por una de esas tres.

También,
en todo lugar encuentro que POO ayuda a "mantener" el código,
y mencionan que si un proyecto crece, solo hay que retocar la clase . . .

Pueden brindarme un ejemplo por favor?


Gracias!
  #2 (permalink)  
Antiguo 20/07/2020, 10:23
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: POO - Criterio para utilizar public, protected o private ?

Cita:
Iniciado por SLD Ver Mensaje
Hola,

la web ewstá plagada de explicaciones sobre las DIFERENCIAS entre
public, protected o private
sin embargo no logro hallar explicaciones aacerca de cuando utilizar
public, protected o private

Todos los textos y ejemplos que he hallado hablan de

https://www.php.net/manual/es/langua...visibility.php

pero quisiera saber las razones, criterios a tener en cuenta para optar por una de esas tres.

También,
en todo lugar encuentro que POO ayuda a "mantener" el código,
y mencionan que si un proyecto crece, solo hay que retocar la clase . . .

Pueden brindarme un ejemplo por favor?


Gracias!
public: sera publico para todos
protected: solo puede acceder la Clase principal y sus Herederos
private: solo puede acceder la clase principal


ilustrado en un ejemplo seria

Código PHP:
<?php
class a{
protected 
$b=1;
}

class 
extends a{

    public function 
__construct(){
        
var_dump($this->b);
    }
}

$instancia = new b();


class 
a_private{
private 
$b=2;
}

class 
b2 extends a_private{

    public function 
__construct(){
        
var_dump($this->b);
    }
}

$instancia = new b2();
Código resultado:
Ver original
  1. int(1)
  2. NOTICE Undefined property: b2::$b on line number 23
  3. NULL
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 20/07/2020, 18:01
SLD
 
Fecha de Ingreso: diciembre-2013
Mensajes: 121
Antigüedad: 10 años, 4 meses
Puntos: 6
Respuesta: POO - Criterio para utilizar public, protected o private ?

Cita:
Iniciado por tuadmin Ver Mensaje
public: sera publico para todos
protected: solo puede acceder la Clase principal y sus Herederos
private: solo puede acceder la clase principal
muchas gracia spor tu tiempo tuadmin, puedes por favor indicarme qué criterio/lógica/razones debo utilizar para elegir el hacer

public
protected
private

una propiedad ?
  #4 (permalink)  
Antiguo 20/07/2020, 20:40
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: POO - Criterio para utilizar public, protected o private ?

Cita:
Iniciado por SLD Ver Mensaje
muchas gracia spor tu tiempo tuadmin, puedes por favor indicarme qué criterio/lógica/razones debo utilizar para elegir el hacer

public
protected
private

una propiedad ?
la logica seria sentido comun, al crear una CLASE esta tendra metodos, por ejemplo para crear un ENCRIPTADOR

Código PHP:
<?php
class encriptador{
  private function 
_proceso_matematico($string){
     return 
'un algoritmo o lo quesea';
   }
  private function 
_proceso_matematico_inverso($string){
     return 
'un algoritmo o lo quesea';
   }

  public function 
codificar($string){ return $this->_proceso_matematico("coodificado");}
   public function 
decodificar($string){ return $this->_proceso_matematico_inverso("coodificado");}
}
al instanciar la clase encriptador solo nos interesa que se pueda acceder a los metodos de codificar y decodificar, todo lo demas como usuario no nos importa

para el tema de protected, es para metodos heredados del cual ya hayas previsto que seran usados. em resumen
public ,private y protected se refiere al alcance de la VISIBILIDAD de los metodos y propiedades. mas que todo es para tener la clase en un ORDEN,

por ejemplo tienes

private codificar_string()
y
public codificar()

al usar tu clase, a simple vista sabras utilizar el metodo correcto sin equivocarte
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #5 (permalink)  
Antiguo 21/07/2020, 08:42
SLD
 
Fecha de Ingreso: diciembre-2013
Mensajes: 121
Antigüedad: 10 años, 4 meses
Puntos: 6
Respuesta: POO - Criterio para utilizar public, protected o private ?

Cita:
Iniciado por tuadmin Ver Mensaje
la logica seria sentido comun
Gracias tuadmin

En el caso de crear la clase class PortalWeb, con la propiedad $lenguaje = 'es';

qué debo asignarle?

public, protected o private ??
  #6 (permalink)  
Antiguo 21/07/2020, 11:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: POO - Criterio para utilizar public, protected o private ?

No es que haya una guía específica para determinar cómo declarar cada propiedad o método, todo depende de lo que vas a hacer con cada una y tal vez una serie de preguntas pueda servir como punto de partida:

¿Necesitas que la propiedad sea de solo lectura?
Sí: private y hay que crear un método para establecer/devolver el valor actual (setter/getter)
No: public

¿Quieres que la propiedad se pueda modificar fuera de la clase?
Sí: public
No: private

¿Puede haber repercusiones si la propiedad se modifica fuera de la clase?
Sí, debería modificarse por un método para aplicar otras acciones: private
No, no hay otras propiedades o métodos que dependan de este valor: public

¿Hay riesgos en tener propiedades públicas pero te da flojera crear setters y getters?
Sí: public
No: private

¿Cuándo usar protected?
Cuando tengas clases que extienden otras y necesites acceder a propiedades y métodos desde la clase base y la extendida, evitando accesos desde fuera
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 21/07/2020, 11:10
SLD
 
Fecha de Ingreso: diciembre-2013
Mensajes: 121
Antigüedad: 10 años, 4 meses
Puntos: 6
Respuesta: POO - Criterio para utilizar public, protected o private ?

Cita:
Iniciado por Triby Ver Mensaje
¿Quieres que la propiedad se pueda modificar fuera de la clase?
Sí: public
No: private
Me ha quedado + claro.

Gracias Triby

Etiquetas: poo, private, protected, public
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:23.