Foros del Web » Programando para Internet » PHP »

PHP OO Duda sobre llamar a funciones

Estas en el tema de Duda sobre llamar a funciones en el foro de PHP en Foros del Web. Saludos compañero, actualmente estoy comenzando un proyecto de aplicacion de Facebook, dado que soy nuevo con php me lo estoy tomando con calma y demás ...
  #1 (permalink)  
Antiguo 18/08/2014, 05:26
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Duda sobre llamar a funciones

Saludos compañero, actualmente estoy comenzando un proyecto de aplicacion de Facebook, dado que soy nuevo con php me lo estoy tomando con calma y demás pero llevo unas semanas parado en un mismo problema ( posiblemente muy basico y tengo la solucion delante de mis ojos)...

EL problema es que en la aplicacion que estoy creando, para tener el codigo ordenador y demás he creado un archivo llamado Api.php:

Código:
<?php
session_start();
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );


use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;

$url = new  FacebookRedirectLoginHelper("http://XXX.XXX/Index.php");

function keys()
{
    FacebookSession::setDefaultApplication("appid","secretkey");
}
function get_login()
{
    $url = new  FacebookRedirectLoginHelper("http://XXX.XXX/Index.php");
    return $this->$url;
}



?>
El codigo anterior es la api donde se supone que debe de obtener las keys de acceso y en la funcion get_login redireccionar a la pantalla de acceso..

El problema es que en el proximo archivo Index.php , llamo a la función get_login y se me queda en blanco al ejecutarlo....

Código:
<html>
<body>
<?php
session_start();
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );


use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;

include ("Api.php");

echo '<a href="' . $url->getLoginUrl( array( 'email', 'user_friends' ) ) . '">Login</a>';
?>
</body>
</html>
Deberia de aparecer el enlace "login" para ser redireccionado a Facebook ..

Si me podeis comentar algo que esté haciendo mal os lo agradeceria :D
  #2 (permalink)  
Antiguo 18/08/2014, 07:10
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: Duda sobre llamar a funciones

Código PHP:
Ver original
  1. function get_login() {     $url = new  FacebookRedirectLoginHelper("http://XXX.XXX/Index.php");     return $this->$url; }
En la función de donde sacas $this->$url ?
Creo que debiera de ser asi
Código PHP:
Ver original
  1. function get_login() {     $url = new  FacebookRedirectLoginHelper("http://XXX.XXX/Index.php");     return $url; }
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 18/08/2014, 09:22
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por hhs Ver Mensaje
Código PHP:
Ver original
  1. function get_login() {     $url = new  FacebookRedirectLoginHelper("http://XXX.XXX/Index.php");     return $this->$url; }
En la función de donde sacas $this->$url ?
Creo que debiera de ser asi
Código PHP:
Ver original
  1. function get_login() {     $url = new  FacebookRedirectLoginHelper("http://XXX.XXX/Index.php");     return $url; }
Gracias por responder, parece que ese no es el problema, lo modifiqué como me has comentado y sigue igual :( lo que me parece aun más raro es que si especifico todo sin los function en un mismo archivo ( en index.php) todo si funciona... :_S
  #4 (permalink)  
Antiguo 18/08/2014, 09:37
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: Duda sobre llamar a funciones

Código PHP:
Ver original
  1. include ("Api.php");
  2.  
  3. echo '<a href="' . $url->getLoginUrl( array( 'email', 'user_friends' ) ) . '">Login</a>';
  4. ?>
  5. </body>
  6. </html>

En tu mensaje original dice que mandas a llamar a get_login y en ningún lado veo donde se supone que haces la llamada a la función. Espero que no supongas que incluyendo el archivo Api se llama a la función.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 18/08/2014, 10:12
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por hhs Ver Mensaje
Código PHP:
Ver original
  1. include ("Api.php");
  2.  
  3. echo '<a href="' . $url->getLoginUrl( array( 'email', 'user_friends' ) ) . '">Login</a>';
  4. ?>
  5. </body>
  6. </html>

En tu mensaje original dice que mandas a llamar a get_login y en ningún lado veo donde se supone que haces la llamada a la función. Espero que no supongas que incluyendo el archivo Api se llama a la función.
Pues no lo habia llamado, tienes razón, pero de igual manera, creo que me he perdido un poco, dado que sigue igual..

Código:
<html>
<body>
<?php
session_start();
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );


use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;

include ("Api.php");
$conectar = new Api();
$conectar->get_login();

echo '<a href="' . $url->getLoginUrl() . '">Login</a>';
?>
</body>
</html>
y el Api.php

Código:
<?php
session_start();
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );


use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;

$url = new  FacebookRedirectLoginHelper("xxx.xxx");

class Api
{
function get_login()
{
    FacebookSession::setDefaultApplication("xxxxxxx","xxxxxx");
    $url = new  FacebookRedirectLoginHelper("xxx.xx");
    $url->getLoginUrl();
    return $url;
}
}

?>
  #6 (permalink)  
Antiguo 18/08/2014, 10:46
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: Duda sobre llamar a funciones

Tienes experiencia usando objetos con PHP. Lo comento por que estas cometiendo errores básicos.
Código PHP:
Ver original
  1. $conectar = new Api(); $conectar->get_login();//Donde esta la asignación  //este $url esta tomando tu primera llamada al api de facebook antes
  2. //de hacer sesion
  3. echo '<a href="' . $url->getLoginUrl() . '">Login</a>';

Código PHP:
Ver original
  1. /**
  2.     * Tienes dos opciones
  3.     * lo borras o quitas el FacebookRedirect del metodo get_login
  4.     */
  5.     $url = new  FacebookRedirectLoginHelper("xxx.xxx");  
  6.    
  7.     class Api { function get_login() {     FacebookSession::setDefaultApplication("xxxxxxx","xxxxxx");     $url = new  FacebookRedirectLoginHelper("xxx.xx");     $url->getLoginUrl();     return $url; } }

Te sugieto que use var_dump o print_r para que observes que es lo que tienes en las variables y si es lo que esperas.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 18/08/2014, 10:51
 
Fecha de Ingreso: agosto-2014
Mensajes: 6
Antigüedad: 9 años, 8 meses
Puntos: 1
Respuesta: Duda sobre llamar a funciones

por qué no trabajas con un framework, algunos incluso tienen bundles listos para ocupar la api de facebook.
  #8 (permalink)  
Antiguo 18/08/2014, 19:57
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por hhs Ver Mensaje
Tienes experiencia usando objetos con PHP. Lo comento por que estas cometiendo errores básicos.
Código PHP:
Ver original
  1. $conectar = new Api(); $conectar->get_login();//Donde esta la asignación  //este $url esta tomando tu primera llamada al api de facebook antes
  2. //de hacer sesion
  3. echo '<a href="' . $url->getLoginUrl() . '">Login</a>';

Código PHP:
Ver original
  1. /**
  2.     * Tienes dos opciones
  3.     * lo borras o quitas el FacebookRedirect del metodo get_login
  4.     */
  5.     $url = new  FacebookRedirectLoginHelper("xxx.xxx");  
  6.    
  7.     class Api { function get_login() {     FacebookSession::setDefaultApplication("xxxxxxx","xxxxxx");     $url = new  FacebookRedirectLoginHelper("xxx.xx");     $url->getLoginUrl();     return $url; } }

Te sugieto que use var_dump o print_r para que observes que es lo que tienes en las variables y si es lo que esperas.
lo que pasa es que si pongo en el mismo archivo todo funciona perfectamente , es decir en Index.php lo que tenga en Api.php

Código:
<html>
<body>
<?php


FacebookSession::setDefaultApplication("xxxxxxxxx","xxxxxxx");
$url = new  FacebookRedirectLoginHelper("xxxxxxxxx");
    
echo '<a href="' . $url->getLoginUrl( array( 'email', 'user_friends' ) ) . '">Login</a>';
?>

</body>
</html>
el problema reside en no saber por qué en uno funciona y en otro no.... :S creo que es problema de llamada de la funcion de un archivo a otro no ?

Cita:
Iniciado por zeNtaKKK Ver Mensaje
por qué no trabajas con un framework, algunos incluso tienen bundles listos para ocupar la api de facebook.
Al estar empezando prefiero hacer el trabajo sin muchas "ayudas" para así cojer una base solida :D
  #9 (permalink)  
Antiguo 18/08/2014, 22:32
 
Fecha de Ingreso: agosto-2014
Mensajes: 6
Antigüedad: 9 años, 8 meses
Puntos: 1
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por MaNdItOo Ver Mensaje
Al estar empezando prefiero hacer el trabajo sin muchas "ayudas" para así cojer una base solida :D
"ayudas"... preferible ocupar código de otro que esté entre comillas bien hecho a realizar un sistema con practicas indecorosas.
  #10 (permalink)  
Antiguo 19/08/2014, 08:55
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda sobre llamar a funciones

Lo primero que tienes que tener en cuenta... es aprender a leer lo que te dicen. Poquito a poco, con cuidado. No suelen poner comentarios "sin ton ni son". Intenta buscarles el sentido

Eso, y q php no es mágico.

Te ha comentado el posible fallo @hhs, pero voy a intentar aclararlo...

En tu archivo que haces el include de API,

Tienes esta línea:
Código PHP:
echo '<a href="' $url->getLoginUrl() . '">Login</a>'
¿Qué es $url? Pq diría, q no está en tu "ámbito", que no puedes acceder a ella sin declararla o obtenerla de alguna asignación antes....
__________________
>> Eleazan's Source
>> @Eleazan
  #11 (permalink)  
Antiguo 19/08/2014, 13:41
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por Eleazan Ver Mensaje
Lo primero que tienes que tener en cuenta... es aprender a leer lo que te dicen. Poquito a poco, con cuidado. No suelen poner comentarios "sin ton ni son". Intenta buscarles el sentido

Eso, y q php no es mágico.

Te ha comentado el posible fallo @hhs, pero voy a intentar aclararlo...

En tu archivo que haces el include de API,

Tienes esta línea:
Código PHP:
echo '<a href="' $url->getLoginUrl() . '">Login</a>'


¿Qué es $url? Pq diría, q no está en tu "ámbito", que no puedes acceder a ella sin declararla o obtenerla de alguna asignación antes....
Gracias por tu repusta ante todo,
Pues ahora que he leido "varias veces" tu comentario me he dado cuenta que de "llamado" a la funcion get_login() del archivo Api.php, pero la variable $url no, que es la que necesito..

¿ A esto te referias? , la verdad es que he estado buscado como "llamar" a una parametro de funciones, pero aun se me escapa de las manos.. hará que seguir :(

¿Me recomiendas alguna forma?
  #12 (permalink)  
Antiguo 20/08/2014, 01:35
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda sobre llamar a funciones

Fíjate en la sentencia "return" de la función. ¿Pq está ahí? ;)

Edit: Te pongo un ejemplo básico
Código PHP:

function suma($a$b) {
    
$suma $a $b;    
    return 
$suma;
}

$valor1=5;
$valor2=3;

$total_suma suma($valor1$valor2);
echo 
$total_suma
Salvando unas pequeñiiiiitas diferencias, es lo mismo ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #13 (permalink)  
Antiguo 21/08/2014, 05:08
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por Eleazan Ver Mensaje
Fíjate en la sentencia "return" de la función. ¿Pq está ahí? ;)

Edit: Te pongo un ejemplo básico
Código PHP:

function suma($a$b) {
    
$suma $a $b;    
    return 
$suma;
}

$valor1=5;
$valor2=3;

$total_suma suma($valor1$valor2);
echo 
$total_suma
Salvando unas pequeñiiiiitas diferencias, es lo mismo ;)
Segun lo que he comprendido he echo esto :

Archivo Api.php :
Código:
$getAcceso = new FacebookRedirectLoginHelper('http://gestorpro.recetaheavy.com/Index.php/');
$getAcceso->getLoginUrl();
class Api

{
public function keys()
{
    FacebookSession::setDefaultApplication("599815046803559","5a04bf4a112e127365ab547ef839d71f");
}
public function get_login($url)
{
    $retorno = $url;
    return $retorno;
}
en el archivo Index.php :
Código:
$api = new Api();
$api->get_login($getAcceso);




echo '<a href="' . $api->get_login($getAcceso). '">Login</a>';
?>
Sigue sin funcionar , es decir el index no muestra el enlace de "Login"...

Lo siento por ser tan corto aun... pero sigue probando :P
  #14 (permalink)  
Antiguo 21/08/2014, 05:32
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda sobre llamar a funciones

Te has liado un poco...

Mira, tenías esto:
Código PHP:
class Api
{
    function 
get_login()
    {
        
FacebookSession::setDefaultApplication("xxxxxxx","xxxxxx");
        
$url = new  FacebookRedirectLoginHelper("xxx.xx");
        
$url->getLoginUrl(); 
        return 
$url;
    }

Que, si te fijas, hace un return de la variable (en este caso, un objeto) $url.

Y en el otro archivo, esto:
Código PHP:
$conectar = new Api();
$conectar->get_login();
echo 
'<a href="' $url->getLoginUrl() . '">Login</a>'
Te dije que esa $url, no existe... pero get_login, te la devuelve...

Asiq puedes hacer esto:
Código PHP:
$conectar = new Api();
$url $conectar->get_login();
echo 
'<a href="' $url->getLoginUrl() . '">Login</a>'
Así recoges ese objeto que te devuelve la función ;)

Saludos!
__________________
>> Eleazan's Source
>> @Eleazan
  #15 (permalink)  
Antiguo 22/08/2014, 02:33
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por Eleazan Ver Mensaje
Te has liado un poco...

Mira, tenías esto:
Código PHP:
class Api
{
    function 
get_login()
    {
        
FacebookSession::setDefaultApplication("xxxxxxx","xxxxxx");
        
$url = new  FacebookRedirectLoginHelper("xxx.xx");
        
$url->getLoginUrl(); 
        return 
$url;
    }

Que, si te fijas, hace un return de la variable (en este caso, un objeto) $url.

Y en el otro archivo, esto:
Código PHP:
$conectar = new Api();
$conectar->get_login();
echo 
'<a href="' $url->getLoginUrl() . '">Login</a>'
Te dije que esa $url, no existe... pero get_login, te la devuelve...

Asiq puedes hacer esto:
Código PHP:
$conectar = new Api();
$url $conectar->get_login();
echo 
'<a href="' $url->getLoginUrl() . '">Login</a>'
Así recoges ese objeto que te devuelve la función ;)

Saludos!
Gracias ! pues parece que no hay manera, sigue sin aparecerme.. lo más raro es que si hago todo en el mismo archivo si funciona y me aparece el enlace.... nose que más hacer la verdad.. :(
  #16 (permalink)  
Antiguo 22/08/2014, 02:57
 
Fecha de Ingreso: diciembre-2012
Ubicación: Las palmas
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Duda sobre llamar a funciones

Cita:
Iniciado por Eleazan Ver Mensaje
Te has liado un poco...

Mira, tenías esto:
Código PHP:
class Api
{
    function 
get_login()
    {
        
FacebookSession::setDefaultApplication("xxxxxxx","xxxxxx");
        
$url = new  FacebookRedirectLoginHelper("xxx.xx");
        
$url->getLoginUrl(); 
        return 
$url;
    }

Que, si te fijas, hace un return de la variable (en este caso, un objeto) $url.

Y en el otro archivo, esto:
Código PHP:
$conectar = new Api();
$conectar->get_login();
echo 
'<a href="' $url->getLoginUrl() . '">Login</a>'
Te dije que esa $url, no existe... pero get_login, te la devuelve...

Asiq puedes hacer esto:
Código PHP:
$conectar = new Api();
$url $conectar->get_login();
echo 
'<a href="' $url->getLoginUrl() . '">Login</a>'
Así recoges ese objeto que te devuelve la función ;)

Saludos!
Gracias ! pues parece que no hay manera, sigue sin aparecerme.. lo más raro es que si hago todo en el mismo archivo si funciona y me aparece el enlace.... nose que más hacer la verdad.. :(

Etiquetas: funciones, html
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 08:31.