Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Contruccion bien hecha con __contruct + set + get

Estas en el tema de Contruccion bien hecha con __contruct + set + get en el foro de PHP en Foros del Web. Hola buenas, miren estoy iniciandome en el tema de la orientacion a objetos. Concretamente hacer una clase. Mi profesor me explico lo del __contruct , ...
  #1 (permalink)  
Antiguo 09/03/2015, 04:13
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 5
Contruccion bien hecha con __contruct + set + get

Hola buenas, miren estoy iniciandome en el tema de la orientacion a objetos.

Concretamente hacer una clase.

Mi profesor me explico lo del __contruct , set y get. pero la verdad es que me confundio bastante.

Entiendo que con set se le puede dar un valor por defecto a una variable recien creada.

y con get recuperar ese valor .

Pero no entiendo que hace contruct.


Es decir intuyo que en una contruccion bien echa primero estaria __contruct , despues set y despues get


Si hago un ejemplo con solo poner set y get, fuciona. ¿?


y si luego hago otro ejemplo con __contruct y get , tambien funciona ¿?


Si alguien me puediera hacer un ejemplo sencillo usando __contruct + set + get

le estraria muy agradecido, basandose en los dos ejemplos que acontinuacion pongo.

Me ayudaria mucho para poder seguir aprendiendo bien.


ejemplo 1:
Código PHP:
Ver original
  1. public $titulo;
  2.                    
  3.                     function __construct($titulo = "Título por defecto") {
  4.                    
  5.                         $this->titulo = $titulo;           
  6.                         }
  7.                    
  8.                    
  9.                     public function getTitulo() {
  10.                    
  11.                         return $this->titulo;          
  12.                         }


ejemplo 2:

Código PHP:
Ver original
  1. public $titulo;
  2.    
  3.                     function setTitulo($titulo = "Titulo por defecto") {
  4.                    
  5.                         $this->titulo = $titulo;
  6.                    
  7.                     }
  8.                    
  9.    
  10.                     function getTitulo() {
  11.                    
  12.                         return $this->titulo;
  13.                    
  14.                     }
  #2 (permalink)  
Antiguo 09/03/2015, 12:19
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contruccion bien hecha con __contruct + set + get

un constructor y metodos getter and setter son cosas distintas, ahora sabes ¿que es un constructor? ¿te lo explico el profesor? es ahí donde necesitas llegar, un constructor es un método especial que se ejecuta cuando instancias una clase, normalmente se usa para inicializar atributos que necesite el objeto, un setter se usa para settear o dar valores a un atributo y un getter es para obtenerlo.

Ahora respondiendo a tus preguntas:

Cita:
Es decir intuyo que en una contruccion bien echa primero estaria __contruct , despues set y despues get
no necesariamente, depende de lo que desees hacer

Cita:
Si hago un ejemplo con solo poner set y get, fuciona. ¿?
no es obligatorio declarar un constructor, se hace cuando se necesita también depende de la lógica de lo que desees hacer

Cita:
y si luego hago otro ejemplo con __contruct y get , tambien funciona ¿?
claro, puedes tener constructores setter and getter sin ningún problema

Cita:
Si alguien me puediera hacer un ejemplo sencillo usando __contruct + set + get
hay muchos en la web

los ejemplos que compartiste son correctos, solo cambiaria el public del atributo por private por el principio de ocultamiento.

saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 09/03/2015, 12:48
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: Contruccion bien hecha con __contruct + set + get

Hola carlos, me ha quedado todo mas claro.

Pero me quedo algo de duda sobre el contructor:

veamos, si un constructor es un metodo especial que se ejecuta cuando instancio una clase y que normalmente para inicializar atributo.

Se podria decir que en el ejemplo que he puesto la variable que inicializo y que se necesita es: $titulo

dicho de otro modo tendria que inicializar $titulo con un construct, luego darle un valor con get y por ultimo obtener el valor con un get?
  #4 (permalink)  
Antiguo 09/03/2015, 12:58
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contruccion bien hecha con __contruct + set + get

es que en tu ejemplo es opcional pasar el parámetro porque lo inicializas, pero has esto
Código PHP:
Ver original
  1. $class = new TuClase('titulo que quieres dar al atributo');
  2. echo $class->getTitulo();
y ve que te imprime.

ahora no se inicializa un atributo solo para hacer un get, también para realizar operaciones dentro de la clase

Cita:
dicho de otro modo tendria que inicializar $titulo con un construct, luego darle un valor con get y por ultimo obtener el valor con un get?
un getter no asigna valor lo obtiene, un setter se lo asigna, pero si ya lo hiciste con el constructor para que volver a asignarlo (al menos que la aplicación en algún momento lo necesite).
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 09/03/2015, 13:05
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 5
Respuesta: Contruccion bien hecha con __contruct + set + get

oK, entendido, y comprendido.

gracias por la ayuda , ahora tengo las cosas mas claras para seguir estudiando.


Etiquetas: set, variable
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 21:50.