PHP通过函数传递一个对象

时间:2013-06-12 20:26:41

标签: 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('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;
    }
}

现在,如果我想通过调用相关函数从脚本的另一个页面调用该对象,我该怎么办?

我的意思是,如果我想现在循环$event_info,好像我在该函数内部并获取每个给定的数据,是否有办法?

也许听起来有点“太多”了:))

1 个答案:

答案 0 :(得分:1)

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

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文件中,请确保include_once实现getMyFbEvents的文件。)

$events = getMyFbEvents();
forearch($events as $event){
    echo $event->description;
}

在旁注上使用global关键字被视为不良做法。更简洁的实现只会将$ facebook变量作为参数传递给函数

function getMyFbEvents($facebook) {
    try {
    //..... the rest of your function

然后打电话

$var = getMyFbEvents($facebook);