PHP通过函数传递对象

PHP通过函数传递对象,php,function,object,Php,Function,Object,我有一个返回json对象的函数: function getMyFbEvents() { global $facebook; try { $fb_events = $facebook->api('/me/events/'); foreach ($fb_events["data"] as $fb_event_data) { $event_info = json_decode(file_get_contents('htt

我有一个返回json对象的函数:

function getMyFbEvents() {
    global $facebook;
    try {
        $fb_events = $facebook->api('/me/events/');

        foreach ($fb_events["data"] as $fb_event_data) {

            $event_info = json_decode(file_get_contents('https://graph.facebook.com/' . $fb_event_data['id'] . '/?access_token=' . $facebook->getAccessToken()));
            return $event_info;
        }
    } catch (FacebookApiException $e) {
        error_log($e);
        $fb_events = null;
        return null;
    }
}
现在,如果我想通过调用relative函数从脚本的另一页调用该对象,我该怎么做

我的意思是,如果我现在想循环
$event\u info
,就好像我在那个函数中一样,并获取每个给定的数据,有办法吗


可能听起来有点“太多”:)

首先,您需要累积所有值,然后返回,而不是从循环中返回

function getMyFbEvents() {
    global $facebook;
    try {
        $fb_events = $facebook->api('/me/events/');
        $eventDetails = array();
        foreach ($fb_events["data"] as $fb_event_data) {

            $event_info = json_decode(file_get_contents('https://graph.facebook.com/' . $fb_event_data['id'] . '/?access_token=' . $facebook->getAccessToken()));
            $eventDetails[] = $event_info;
        }
        return $eventDetails;
    } catch (FacebookApiException $e) {
        error_log($e);
        $fb_events = null;
        return null;
    }
}
然后,当您想使用它时,只需说(如果它位于不同的php文件中,请确保在实现getMyFbEvents的文件中包含_)

另一方面,使用
global
关键字被认为是不好的做法。更简洁的实现只需将$facebook变量作为参数传递给函数

function getMyFbEvents($facebook) {
    try {
    //..... the rest of your function
然后打电话

$var = getMyFbEvents($facebook);

是的,好的。但这样它就不会像在函数本身中一样循环。我需要能够循环这些数据,就像它是一个数组一样。我想我知道你现在在找什么。记住,
file\u get\u contents
将向远程服务器发送单个请求,而你正在循环中使用它,这可能会让用户等待很长时间(如果有10个请求),这不是一个好主意,依我看。
$var = getMyFbEvents($facebook);