[Problem] Klasse + file_get_contents

Halfbax

Erfahrenes Mitglied
Guten Abend!

Ich erhalte folgende Fehlermeldungen die ich seit Stunden versuche zu lösen.
Code:
Notice: Undefined variable: region in ... on line 1
Notice: Undefined variable: api_key in ... on line 21
Code:
Notice: Undefined variable: api_key in ... on line 21
Code:
Warning: file_get_contents(0): failed to open stream: No such file or directory in ... on line 21

Ich habe den Inhalt von $api_key zunächst einmal entfernt, da ich ihn nicht verbreiten darf. Der Link ist definitv gültig.

Code:
<?php
class _RiotAPI
{
   //Konstruktor % Standardwerte
   private $sum_id = '0';
   private $sum_name = 'n/a';
   private $region = 'n/a';
   
   private $api_key = '*zensiert*';
   
   public function get_sum_id($name, $reg)
   {
     $this->sum_name = $name;
     $this->region = $reg;

     $inhalt = file_get_contents('https://euw.api.pvp.net/api/lol/'
                       & $region
                         & '/v1.4/summoner/by-name/'
                           & $sum_name
                             & '?api_key='
                               & $api_key);
     
     preg_match('/id":(?P<ID>\d+)/', $inhalt, $e);
   
     return $e[ID];
   }
}
   $x = new _RiotAPI();
   printf ($x->get_sum_id('Yarija', 'euw') );
?>

Das wäre der Inhalt der Seite, die aufgerufen wird ...
Code:
{"yarija":{"id":22339544,"name":"Yarija","profileIconId":583,"summonerLevel":30,"revisionDate":1403271271000}}

Es wäre sehr nett mich darauf hinzuweisen was ich falsche mache.

P.S Der Code sah zu beginn vollkommen anders aus, durch meine kompletten Veränderungen könnte es sein. Das noch mehr Fehler hinein gekommen sind.

Mit freundlichen Grüßen
Halfbax
 
Hallo und willkommen auf tutorials.de.

Du hast anscheinend schon mit Sprachen wie VB zu tun gehabt. PHP verwendet jedoch nicht das Kaufmann-Und (&) um Strings zu verbinden, sondern den einfachen Punkt (.). Daher hast du jede Menge semantische Fehler drinnen. Semantisch deshalb, weil das Kaufmann-Und in PHP eine andere Bedeutung hat, nämlich die bitweise Und-Verknüpfung (AND).

Desweiteren haben Variablen in PHP einen Scope, sprich, sie sind nicht von überall aus abrufbar. Wenn du auf die Mitgliedsvariable einer Klasse innerhalb der Klasse zugreifen willst, musst du den $this-Zeiger verwenden. Beispiel:

PHP:
class foo
{
  private $string = "world";

  public function bar($param)
  {
    echo $param . " " . $this->string;
  }
}

$a = new foo();
$a->bar("hello");
 
Vielen Dank! Ja ich komme aus dem C++ Bereich und versuche mich nun in der Webentwicklung.

Ich habe nun leider folgende Fehler bei denen ich hänge...
Code:
s ist ein Fehler in dem Script aufgetreten welches debuggt wurde:

file_get_contents(): Unable to find the wrapper &quot;https&quot; - did you forget to enable it when you configured PHP?

Und ein Notice: Undefined variable: ... für sämtliche Variable die in der Klasse definiert worden sind.

LG
Halfbax
 
Das bedeutet, es ist kein Stream-Wrapper für https verfügbar. Was gibt denn

PHP:
var_dump( stream_get_wrappers() );

aus?

Ich habe bereits ein Beispiel für den Zugriff auf Klassenmember-Variablen gezeigt.
 
Entschuldi
Das bedeutet, es ist kein Stream-Wrapper für https verfügbar. Was gibt denn

PHP:
var_dump( stream_get_wrappers() );

aus?

Ich habe bereits ein Beispiel für den Zugriff auf Klassenmember-Variablen gezeigt.
Entschuldige die späte Antwort, ich war bis dato im Urlaub *_*

Es wird folgendes ausgeben
Code:
array (size=10)
0 => string 'php' (length=3)
1 => string 'file' (length=4)
2 => string 'glob' (length=4)
3 => string 'data' (length=4)
4 => string 'http' (length=4)
5 => string 'ftp' (length=3)
6 => string 'zip' (length=3)
7 => string 'compress.zlib' (length=13)
8 => string 'compress.bzip2' (length=14)
9 => string 'phar' (length=4)

MFG
Halfbax
 
Ich rufe die .php Datei lokal auf, wie fixe ich das Ganze nun? Muss ich nur https aktivieren?
 
XAMPP 1.8.3, [PHP: 5.5.11]
Windows 8 64-Bit

Bin mittlerweile auf reine Funktionen umgestiegen, die auch funktionieren nur folgen nun andere Probleme.

Beispielsweise, ich habe folgenden Inhalt der ausgewertet werden muss.

Code:
{"22339544": [
{
"queue": "RANKED_SOLO_5x5",
"name": "Lee Sin's Soldiers",
"entries": [{
"leaguePoints": 4,
"isFreshBlood": true,
"isHotStreak": false,
"division": "V",
"isInactive": false,
"isVeteran": false,
"playerOrTeamName": "Yarija",
"playerOrTeamId": "22339544",
"wins": 50
}],
"tier": "GOLD"
},
{
"queue": "RANKED_TEAM_3x3",
"name": "Xerath's Tricksters",
"entries": [{
"leaguePoints": 71,
"isFreshBlood": false,
"isHotStreak": false,
"division": "V",
"isInactive": false,
"isVeteran": false,
"playerOrTeamName": "Ærtis",
"playerOrTeamId": "TEAM-d887e530-dde9-11e3-87cb-782bcb497d6f",
"wins": 10
}],
"tier": "SILVER"
},
{
"queue": "RANKED_TEAM_5x5",
"name": "Nautilus's Warlocks",
"entries": [{
"leaguePoints": 86,
"isFreshBlood": false,
"isHotStreak": false,
"division": "IV",
"isInactive": true,
"isVeteran": false,
"playerOrTeamName": "Ærtis",
"playerOrTeamId": "TEAM-d887e530-dde9-11e3-87cb-782bcb497d6f",
"wins": 9
}],
"tier": "SILVER"
}
]}

Nun habe ich folgendes provisorisch "programmiert".
Code:
  function get_league($sum_id, $region, $api_key){
     $inhalt = file_get_contents('https://euw.api.pvp.net/api/lol/euw/v2.4/league/by-summoner/'
                   . $sum_id
                     .'/entry?api_key='
                       . $api_key);
       
     $xml = simplexml_load_string($inhalt);
     
     foreach($xml->$sum_id as $user){
       for($i = 0; $i <= 2; $i++){
         $e_league['$i'] = $user->tier;
         }
     }     
     
     return $e_league;
  }

  for($i = 0; $i <= 2; $i++){   
     echo sum_league['$i'];
   }

Ich habe nun erstens ein Problem mit dem Auslesen, da ich es nicht richtig hin bekommen. Ich habe konstant 3 Werte in diesem Fall Gold, Silver und Silver. Und zweites ein Problem mit dem bilden und übergeben von Arrays siehe Fehler.

Code:
Parse error: syntax error, unexpected '[', expecting ',' or ';' in D:\XAMPP\htdocs\riot_api\index.php on line 43

Zeile 43 ist folgender Aparello: echo sum_league['$i'];

Ich hoffe ihr könnt mir vielleicht da weiterhelfen :)

Liebe Grüße
Halfbax
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück