Использование $ this, когда нет в ошибке контекста объекта - PullRequest
1 голос
/ 13 августа 2010

Я получаю фатальную ошибку PHP при попытке выполнить мой скрипт: Using $this when not in object context Сценарий собирает данные из Google Analytics через API, а затем отображает их на странице.

Ниже приведен фрагмент кодагде сценарий умирает:

$records = $this->getAnalyticRecords ( date ( 'Y-m-d', $startTime ), date ( 'Y-m-d', $endEnd ), 'ga:date', 'ga:visitors,ga:newVisits,ga:visits,ga:pageviews,ga:timeOnPage,ga:bounces,ga:entrances,ga:exits' );

getAnalyticsRecords устанавливается:

function getAnalyticRecords($startDate, $endDate, $dimensions, $metrics, $sort = '', $maxResults = '') {

    $url = 'https://www.google.com/analytics/feeds/data';
    $url .= "?ids=" . $this->profile;
    $url .= "&start-date=" . $startDate;
    $url .= "&end-date=" . $endDate;
    $url .= "&dimensions=" . $dimensions;
    $url .= "&metrics=" . $metrics;
    if (! empty ( $sort )) {
        $url .= "&sort=" . $sort;
    }
    if (! empty ( $maxResults )) {
        $url .= "&max-results=" . $maxResults;
    }
    if (($feedData = $this->fetchFeed ( $url )) === FALSE) {
        return array ();
    }
    $doc = new DOMDocument ( );
    $doc->loadXML ( $feedData );
    $results = array ();

    $aggregates = $doc->getElementsByTagName ( 'aggregates' );
    foreach ( $aggregates as $aggregate ) {
        $metrics = $aggregate->getElementsByTagName ( 'metric' );
        foreach ( $metrics as $metric ) {
            $results ['aggregates'] ['metric'] [$metric->getAttribute ( 'name' )] = $metric->getAttribute ( 'value' );
        }
    }

    $entries = $doc->getElementsByTagName ( 'entry' );
    foreach ( $entries as $entry ) {
        $record = array ();
        $record ["title"] = $entry->getElementsByTagName ( 'title' )->item ( 0 )->nodeValue;
        $dimensions = $entry->getElementsByTagName ( 'dimension' );
        foreach ( $dimensions as $dimension ) {
            $record ['dimension'] [$dimension->getAttribute ( 'name' )] = $dimension->getAttribute ( 'value' );
        }
        $metrics = $entry->getElementsByTagName ( 'metric' );
        foreach ( $metrics as $metric ) {
            $record ['metric'] [$metric->getAttribute ( 'name' )] = $metric->getAttribute ( 'value' );
        }
        $results ['entry'] [] = $record;
    }
    return $results;
}

1 Ответ

2 голосов
/ 13 августа 2010

Вы должны прослушать ошибку.Вы используете $this, когда не в классе.

Попробуйте либо заключить код в класс, либо пропустить $this->.Вместо этого используйте global.

...