Foros del Web » Programando para Internet » PHP »

PHP OO llamar a funcion dentro de otra funcion archivos php diferentes

Estas en el tema de llamar a funcion dentro de otra funcion archivos php diferentes en el foro de PHP en Foros del Web. Hola amigos tengo una incógnita y no encuentro informacion referente a ello.. expongo este código solo como ejemplo no necesariamente por que vaya a ser ...
  #1 (permalink)  
Antiguo 07/09/2014, 12:57
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 11 meses
Puntos: 28
Pregunta llamar a funcion dentro de otra funcion archivos php diferentes

Hola amigos tengo una incógnita y no encuentro informacion referente a ello..
expongo este código solo como ejemplo no necesariamente por que vaya a ser el utilizado.


primero que nada tengo un archivo de configuracion.php con el siguiente código:
Código PHP:
Ver original
  1. <?php
  2.     //Directorio del nucleo de PHP y configuracion
  3.     $APP_PHPCORE_DIR=$_SERVER['DOCUMENT_ROOT'] . '/phpfile';
  4.     define("SESSION_CLASS"  ,"class.session.php");//clase que inicialisa la sesiones
  5.     define("CONECT_CLASS"   ,"class.connection.php");//clase para realisar conecciones a la base de datos  
  6.     define("COOKIES_CLASS"  ,"class.cookies.php");//Clase que manipula las cookies creadas
  7.     require_once $APP_PHPCORE_DIR . '/' . SESSION_CLASS;
  8.     require_once $APP_PHPCORE_DIR . '/' . CONECT_CLASS;
  9.     require_once $APP_PHPCORE_DIR . '/' . COOKIES_CLASS;
  10. ?>

tambien tengo la clases hechas de esta manera class.session.php

Código PHP:
Ver original
  1. <?php
  2. class Session{
  3.     //crear la session
  4.     function iniciarSession(){
  5.         session_name('mi_web');
  6.         session_start();
  7.         error_reporting(E_ALL);
  8.     }
  9.     function sesionabierta(){
  10.         if(!isset(session_name('mi_web'))){
  11.             return 'true';
  12.         }else{
  13.             return 'false';
  14.         }
  15.     }
  16. }
  17. ?>

luego tengo un archivo que agrega al de config y inicia las clases para tratarlas como objetos core.php:
Código PHP:
Ver original
  1. <?php
  2. //preparando
  3.     require_once("config/config.php");
  4.     $session        =   new Session();
  5.     $connection     =   new Connection();
  6.     $cookies        =   new Cookies();
  7.     //iniciamos con la ejecución de métodos
  8.     $session    ->  iniciarSession();//iniciamos las sesiones
  9.     $connection ->  tipoDB()
  10. ?>

hasta aquí todo va bien pero el hecho esta lo que deseo hacer dentro de la clase. teniendo en cuenta que con hacer un archivo config donde establezco las clases y creo que guardo memoria para su ejecución al intenar llamar por ejemplo a una funcion de una clase externa dentro de otra funcion en una clase diferente

Código PHP:
Ver original
  1. <?php
  2. class Connection{
  3.     // Coneccion de base de datos, estructura y consultas
  4.     public function tipoDB(){
  5.  
  6.         /**************************/
  7.         llamar a la funcion: sesionabierta() si la sesion esta correcta entonces continuar de lo contrario enviar un mensaje de error
  8.         /**************************/
  9.  
  10.         switch (CONECTOR_DB) {
  11.             case "MySQLi": //Conector para MySQLy
  12.                 $dblink = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS);
  13.                 $selected = mysqli_select_db($dblink,DB_NAME);
  14.                 if (!$selected) { errorDB($dblink); }
  15.                 $dblink->query("SET NAMES 'utf8'");
  16.                 return $dblink;
  17.             break;
  18.             case "Oracle": //Conector para Oracle
  19.                 echo"no se puede utilizar este procedimiento";
  20.             break;
  21.             case "PostGre": //Conector para PostGre
  22.                 echo"no se puede utilizar este procedimiento";
  23.             break;
  24.             case "SQL": //Conector para SQL
  25.                 echo"no se puede utilizar este procedimiento";
  26.             break;     
  27.             default: //Conector para Oracle
  28.                 echo"no Existe una coneccion establecida";
  29.         }
  30.     }
  31.     function errorDB($dblink){
  32.         die ('Error de Conexión a la base de Datos. '.mysqli_error($dblink));
  33.     }
  34. }
  35. ?>

y no se como hacerlo a ver quien me puede tirar una mano con esta incógnita.
__________________
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 07/09/2014, 16:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: llamar a funcion dentro de otra funcion archivos php diferentes

Te sugiero acerca de alcance y contexto: http://php.net/manual/es/language.variables.scope.php

Básicamente mientras comprendas acerca del alcance sabrás que efectos tienen incluir código de otros archivos, sobre todo cuando expone variables, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/09/2014, 16:42
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 11 meses
Puntos: 28
Respuesta: llamar a funcion dentro de otra funcion archivos php diferentes

Gracias por tu ayuda pero no me sirvió de nada.

acabo de encontrar algo que habla sobre el operador "::" que no menciona tu link.

seguiré estudiando su implementacion.
__________________
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 07/09/2014, 16:47
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 funcion dentro de otra funcion archivos php diferentes

Si necesitas llamar el método de un objeto dentro de otro, las definiciones de sus clases tienen que estar en el mismo ámbito o alcance.
De tal forma que si defines un clases en archivos diferentes en el momento que los incluyas en el script puedes instanciar donde los requieras.
Código PHP:
Ver original
  1. // a.php
  2. class A {
  3.  
  4.     public display()
  5.     {
  6.         echo 'hola mundo';
  7.     }
  8.  
  9. }
  10.  
  11. // b.php
  12. class B {
  13.  
  14.     $private $a
  15.  
  16.     public function __construct()
  17.     {
  18.         $this->a = new A();
  19.     }
  20.  
  21.     public display()
  22.     {
  23.         $this->a->display();
  24.     }
  25.  
  26. }
  27.  
  28. include 'a.php';
  29. include 'b.php';
  30.  
  31. $b = new B();
  32. $b->display();
Te sugiero que antes de que sigas te tomes un tiempo repasando el capitulo de POO en el manual sobre todo por que es importante que aprendas a usar los namespaces que estan relacionados con este tema. Tambien es importante que notes que puedes pasar instancias de objetos en el constructor y los métodos de otro objeto
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: funcion, mysql, select, sql
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 04:43.