Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] llamar a metodo de una clase en otra clase

Estas en el tema de llamar a metodo de una clase en otra clase en el foro de PHP en Foros del Web. buenas amigos, al parecer no me esta Funcionando algo: trato de llamar a una metodo de una clase extrena a la clase que utiliso por ...
  #1 (permalink)  
Antiguo 11/07/2014, 04:10
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 11 meses
Puntos: 28
Pregunta llamar a metodo de una clase en otra clase

buenas amigos, al parecer no me esta Funcionando algo:

trato de llamar a una metodo de una clase extrena a la clase que utiliso

por ejemplo tengo:

index.php
Código PHP:
Ver original
  1. //inclucion de archivos
  2. require_once("class.principal.php");
  3. require_once("class.secundaria.php");
  4.  
  5. //instanciamos las clases
  6.  
  7. $variable1  =   new Tomar();//pertenece a class principal
  8. $variable2  =   new Ejecutar();//pertenece a class secundaria
  9.  
  10. //llamada a la funcion de la clase secundaria
  11. $variable2 -> ejecutarSuma();

class.secundaria.php

Código PHP:
Ver original
  1. <?php
  2. class Ejecutar {
  3. function ejecutarSuma(){
  4.         $datos = $variable1 -> datosTomar();//llama a la funcion en en class principal
  5.         $datos =    $datos*100;
  6.     }
  7.  
  8. }
  9. ?>

class.principal.php

Código PHP:
Ver original
  1. <?php
  2. class Tomar {
  3. function datosTomar(){
  4.         $datos=rand(10);
  5.         return $datos;
  6.     }
  7.  
  8. }
  9. ?>

no me funciona la funcion dentro de la otra... como le hago ???
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #2 (permalink)  
Antiguo 11/07/2014, 04:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: llamar a metodo de una clase en otra clase

Deberias crear el objeto de la clase a usar dentro del objeto que lo va a usar, o pasarselo como parametro de la función....


Código PHP:
Ver original
  1. ...
  2. $variable2 -> ejecutarSuma($variable1);


Código PHP:
Ver original
  1. <?php
  2. class Ejecutar {
  3. function ejecutarSuma($variable1){
  4.         $datos = $variable1 -> datosTomar();//llama a la funcion en en class principal
  5.         $datos =    $datos*100;
  6.     }
  7.  
  8. }
  9. ?>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 12/07/2014, 13:22
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 11 meses
Puntos: 28
Respuesta: llamar a metodo de una clase en otra clase

lo intento y me manda error de:

Cita:
Notice: Undefined variable: variable1 in C:\xampp\htdocs\icarosnet\phpcore\class.secundaria .php

Fatal error: Call to undefined function datosTomar() in C:\xampp\htdocs\icarosnet\phpcore\class.secundaria .php
no importa si hago referencia a algún dato
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #4 (permalink)  
Antiguo 12/07/2014, 14:04
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 11 meses
Puntos: 28
Respuesta: llamar a metodo de una clase en otra clase

encontre una solucion pero no se como implementarla:

para llamar metodos pertenecientes a una clase diferente tengo que usar:

Cita:
Language::prueba();
pero como lo hago para esta linea:

Cita:
$datos = $variable1 -> datosTomar();
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #5 (permalink)  
Antiguo 13/07/2014, 11:59
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: llamar a metodo de una clase en otra clase

Código PHP:
Ver original
  1. Language::prueba();

Esto es solo cuando haces una llamada a un método estático.
Para tu duda hay dos formas de resolverlo la mas común pasar la dependencia en el constructor y la otra es pasándola por algún método de la clase.
Te dejo el ejemplo con la segunda opción que es la que querías usar en tu ejemplo:
Código PHP:
Ver original
  1. class Ejecutar {
  2. function ejecutarSuma(Tomar $tomar){
  3.         $datos = $tomar -> datosTomar();//llama a la funcion en en class principal
  4.         return $datos*100;
  5.     }
  6.  
  7. }
  8.  
  9. class Tomar {
  10. function datosTomar(){
  11.         $datos=rand(1,10);
  12.         return $datos;
  13.     }
  14.  
  15. }
  16.  
  17. $tomar = new Tomar();
  18. $ejecutar = new Ejecutar();
  19.  
  20. echo $ejecutar->ejecutarSuma($tomar);

Para mas detalles busca literatura que hable sobre asociación de clases; esta es una asociación de dependencia.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: clase, metodo, 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 01:37.