En utilisant $ quand pas dans l'erreur de contexte de l'objet
-
28-09-2019 - |
Question
Je reçois une erreur de PHP fatale lorsque vous essayez d'exécuter mon script. Using $this when not in object context
Le script recueille des données de Google Analytics via l'API, puis l'affiche sur une page
Voici le morceau de code où les matrices de script:
$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éfinie 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;
}
La solution
Vous devriez écouter l'erreur. Vous utilisez $this
lorsqu'ils ne sont pas dans une classe.
Essayez votre code soit enfermant dans une classe ou d'omettre $this->
. Utilisez global
à la place.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow