Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP uso del Extends

Estas en el tema de PHP uso del Extends en el foro de PHP en Foros del Web. Hola, tengo una curiosidad de la programación orientada a objetos por ejemplo quiero saber como es la estructura para llamar a una función de esta ...
  #1 (permalink)  
Antiguo 08/04/2013, 01:38
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 1 mes
Puntos: 2
Pregunta PHP uso del Extends

Hola, tengo una curiosidad de la programación orientada a objetos por ejemplo quiero saber como es la estructura para llamar a una función de esta manera
Código PHP:
Ver original
  1. $miobjeto = new classs();
  2.  
  3. // esto es lo que quiero hacer
  4. $resultado = $miobjeto->getResultado()->hacer(); // ->hacer() quiero saber como llamar a una segunda funcion de esa forma

es decir de un objeto para obtener 1 resultado llama a 2 funciones al mismo tiempo, quiero ver cual es la estructura para poder hacer algo asi, por que por ejemplo lo normal que uno hace al declarar una Clase es
Código PHP:
Ver original
  1. $miobjeto = new classs();
  2.  
  3. // sin la ultimima instruccion (es lo comun)
  4. $resultado = $miobjeto->getResultado(); // sin la segunda funcion '->hacer()'

tengo entendido que es con el uso de Extends para poder llamar a la función ->hacer() pero no se como seria la estructura quiero un ejemplo, algún guro que me de un ejemplo de clases para poder llamar a 2 funciones en 1 solo objeto.
  #2 (permalink)  
Antiguo 08/04/2013, 02:44
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: PHP uso del Extends

Hola ilen

El extends lo que hace es que proporcionar herencia a una clase respecto a otra. Por ejemplo:

Código PHP:
class Persona {
   private 
$nombre;
   private 
$apellidos;
   private 
$edad;
   ...
   function 
getEdad(){
      return 
$this->edad;
   }
}

class 
Profesor extends Persona {
   private 
$asignatura;
   private 
$centro;
   ...

Un objeto de la clase Profesor tendrá también nombre, apellidos, y edad, porque hereda de Persona ya que al fin y al cabo lo es. Luego los métodos se comparten, es decir que esto es correcto:

Código PHP:
$profe=new Profesor();
$profe->setNombre("José Luís");
$profe->setApellidos("Sampedro");
$profe->setEdad(96);
...
$profe->getEdad(); 
Esto es la herencia y esto es extends. Creo que no tiene que ver con lo que intentas hacer. De todas formas si lo que necesitas es que el método hacer se ejecute después de getResultado, siempre puedes hacerlo en 2 líneas, o incluso llamando a hacer desde dentro de getResultado.

El ejemplo más sencillo y común:

Código PHP:
$resultado $miobjeto->getResultado(); // Lo guardamos en $resultado
$miobjeto->hacer($resultado); // Le pasamos a hacer() el $resultado para lo que sea que lo quieras 
Espero te sirva, saludos!
  #3 (permalink)  
Antiguo 08/04/2013, 03:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: PHP uso del Extends

Otra posibilidad es, no recuerdo el nombre tecnico del tipo de herencia, por uso?, per si como usarla

Código PHP:
Ver original
  1. class Persona {
  2.    private $nombre;
  3.    private $apellidos;
  4.    private $edad;
  5.    ...
  6.    function getEdad(){
  7.       return $this->edad;
  8.    }
  9. }
  10.  
  11. class Profesor extends Persona {
  12.    //Donde objAsignatura es una instancia de la classe asignatura
  13.    private $objAsignatura;
  14.    private $centro;
  15.    ...
  16.    public function get_asignatura(){
  17.        // la funcion retorna un objeto
  18.       return $this->$objAsignatura;
  19.   }
  20. }
  21.  
  22. class asignatura {
  23.    private $horario;
  24.    public function get_horario(){
  25.       return $this->horario;
  26.   }
  27. }  
  28.  
  29. $profe=new Profesor();
  30. ....
  31. $horario=$profe->get_asignatura()->get_horario();

lo que seria equivalente a

Código PHP:
Ver original
  1. $profe=new Profesor();
  2. ....
  3. $asignatura=$profe->get_asignatura();
  4. $horario=$asignatura->get_horario();

Siempre que la primera función o metodo retorne un objeto.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 08/04/2013 a las 03:09
  #4 (permalink)  
Antiguo 09/04/2013, 18:39
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: PHP uso del Extends

Hola, les cuento que ejecute su ejemplo pero me manda error dice que la segunda funcion no es un objeto... =(
  #5 (permalink)  
Antiguo 09/04/2013, 21:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: PHP uso del Extends

Aquí puedes leer sobre la pregunta que planteas:
http://www.forosdelweb.com/f68/objet...objeto-731232/

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 09/04/2013, 22:14
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: PHP uso del Extends

Cita:
Iniciado por ilen Ver Mensaje
Hola, les cuento que ejecute su ejemplo pero me manda error dice que la segunda funcion no es un objeto... =(
el resultado de
Código PHP:
 $miobjeto->getResultado() 
tiene que ser un objeto.

Habria aque ver que hace cada metodo para saber a que queres llegar, pero me parece que lo mejor seria llamar al metodo hacer() dentro de el metodo getResultado()
  #7 (permalink)  
Antiguo 10/04/2013, 04:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: PHP uso del Extends

En el ejemplo que te he puesto falta inicializar el objeto Asignatura dentro del objeto profesor... tal cual no funciona...

Seria algo como


Código PHP:
Ver original
  1. function set_asignatura(){
  2.     $this->objAsinatura=new asignatura();
  3. }

Ni con esto sera un ejemplo operativo....solo pretende mostrar el uso de objetos como atributos de otro objeto.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 10/04/2013, 14:11
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: PHP uso del Extends

Hola, gracias a todos comprendi que la segunda funcion me mandaba error de que no era un objeto y por eso no podia ser invocada, lo que me gusto de esto esque dentro de la clase tengo que prepara todo el resultado luego guardarla en variables privadas o publicas de la clase, y en cada funcion que yo quiera hacer un Objeto de Objeto tengo que retornar la misma clase dentro de la funcion return $this miren este ejemplo que hice con varias llamadas :)

Código PHP:
Ver original
  1. <?php
  2. class Cliente
  3. {
  4.    private $_nombre;
  5.    private $_apellido;
  6.    private $_nacimiento;
  7.  
  8.    public function setNombre($var)
  9.    {
  10.        $this->_nombre = $var;
  11.        return $this;
  12.    }
  13.    public function setApellido($var)
  14.    {
  15.        $this->_apellido = $var;
  16.        return $this;
  17.    }
  18.    public function setNacimiento()
  19.    {
  20.        $this->_nacimiento = ' Naci el 2 de Marzo del 90';
  21.        return $this;
  22.    }
  23.  
  24.    
  25.    function ver(){
  26.      echo $this->_nombre." ".$this->_apellido." ".$this->_nacimiento;
  27.    }
  28. }
  29.  
  30. $cliente = new Cliente();
  31.  
  32. $cliente->setNombre('Lenin')->setApellido('Apellido')->setNacimiento()->ver();  // ahora puedo hacer varias llamadas de 1 mismo objeto como queria hacerlo y lo veia en algunos framework y al final tener mi respuesta como la quiera
  33. ?>

Etiquetas: extends
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 06:52.