Используя $this если не по ошибке контекста объекта

Я получаю фатальную ошибку 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
задан bear 12 August 2010 в 23:37
поделиться

1 ответ

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

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

2
ответ дан 2 September 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: