1
Je reçois une erreur PHP fatale en essayant d'exécuter mon script: Using $this when not in object context
Le script collecte des données de Google Analytics via l'API, puis les affiche sur une page.
Ci-dessous le morceau de code où le script meurt:
$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 est défini par:
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;
}
Étant donné que le second code donné est dans une classe, comment puis-je réintroduire cette classe? Peut-être '$ xfplugin = new googleAnalyticsPlugin;' – bear
@ ct2k7 si getAnalyticRecords() est une méthode d'une classe appelée googleAnalyticsPlugin, alors oui. '$ xfplugin = new googleAnalyticsPlugin; $ records = $ xfplugin-> getAnalyticRecords (...); ' – timdev
Merci timdiv et Borealid :) – bear