باستخدام $ هذا عندما لا يكون في خطأ سياق الكائن

StackOverflow https://stackoverflow.com/questions/3472844

  •  28-09-2019
  •  | 
  •  

سؤال

أحصل على خطأ 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;
}
هل كانت مفيدة؟

المحلول

يجب أن تستمع إلى الخطأ. انت تستخدم $this عندما لا في الفصل.

حاول إما إرفاق الكود الخاص بك في فصل أو حذف $this->. يستخدم global في حين أن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top