Jungbluth
Mitglied
Hallo,
ich habe eine Klasse geschrieben und diese scheint scheinbar den Constructor nicht richtig zu verarbeiten.
Wenn ich die klasse initialisiere kriege ich nicht nur den etliche Fehlermeldungen zu angeblich undefinierten Variablen, sondern scheinbar wird eine Variable auch fast initialisiert.
ich habe eine Klasse geschrieben und diese scheint scheinbar den Constructor nicht richtig zu verarbeiten.
Wenn ich die klasse initialisiere kriege ich nicht nur den etliche Fehlermeldungen zu angeblich undefinierten Variablen, sondern scheinbar wird eine Variable auch fast initialisiert.
Code:
Warning: Undefined variable $pdo in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 16
Warning: Undefined variable $wowprofiler in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 17
Warning: Undefined variable $gearscore in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 18
Warning: Undefined variable $font in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 19
Warning: Undefined variable $fontBold in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 20
Warning: Undefined variable $pdo in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 25
string(56) "C:/xampp/htdocs/wowimagecreator/imagebuilder/arialbd.ttf"
Warning: Undefined variable $pdo in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 26
Fatal error: Uncaught Error: Call to a member function query() on string in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php:26 Stack trace: #0 C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php(108): CharacterImageBuilder->GetData('antialki') #1 C:\xampp\htdocs\wowimagecreator\modules\character.php(5): CharacterImageBuilder->CreateOpenGraphImage('antialki') #2 C:\xampp\htdocs\wowimagecreator\index.php(12): include('C:\\xampp\\htdocs...') #3 {main} thrown in C:\xampp\htdocs\wowimagecreator\imagebuilder\characterImageBuilder.php on line 26
PHP:
<?php
include "./wowprofiler/wowprofiler.php";
include "./wowprofiler/gearscore.php";
use wowprofiler\wowprofiler;
use wowprofiler\gearscore;
class CharacterImageBuilder{
private $pdo;
private $wowprofiler;
private $gearscore ;
private $font;
private $fontBold;
public function __construct($url, $realm, $pathToFont){
$this->$pdo = new PDO("mysql:host=localhost;dbname=423_wowimagecreator", "root", "");
$this->$wowprofiler = new wowprofiler($url,$realm);
$this->$gearscore = new gearscore();
$this->$font = $pathToFont."/arial.ttf";
$this->$fontBold = $pathToFont."/arialbd.ttf";
}
private function GetData($charactername){
$charactername = lcfirst(urldecode($charactername));
var_dump($this->$pdo);
$query = $this->$pdo->query("SELECT * FROM character_cache WHERE name = '".$charactername."'");
var_dump($this->$pdo->errorinfo());
$fetch;
if($query){
$fetch = $query->fetch(PDO::FETCH_ASSOC);
}
if(!empty($fetch) && time() < $fetch["expired_at"]){
return $fetch;
}
try{
$char = $wowprofiler->GetCharacter($charactername);
}
catch(Exception $e){
header("HTTP/1.0 404 Not Found");
exit();
}
$profilerpage = file_get_contents("https://db.rising-gods.de/?profile=eu.rising-gods.".$charactername);
//var_dump($profilerpage);
$matches = [];
preg_match('/<meta property="og:image" content=".*">/mi',$profilerpage,$matches);
preg_match("|https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)|",$matches[0],$matches);
preg_match("|[^\/]+$|",$matches,$characterImage);
$textheadline = $char["prefix"] . " " . $char["name"] . " " . $char["suffix"];
$texttalents;
if($char["talents"][0]["active"]){
$texttalents = $char["talents"][0]["points"];
}
else{
$texttalents = $char["talents"][1]["points"];
}
$textraceclass = $char["race"] . " " . $char["class"];
$level = $char["level"];
$textgearscore = $gearscore->calculateGearScore($char);
$expired_at = time() + 7200;
if(empty($fetch)){
$this->$pdo->query("INSERT INTO `character_cache` (`name`, `characterImage` `textheadline`, `texttalents`, `textraceclass`, `level`, `gearscore`, `expired_at`) VALUES ('".$charactername."', '".$characterImage[0]."', '".$textheadline."', '".$texttalents."', '".$textraceclass."', '".$level."', '".$textgearscore."', '".$expired_at ."');");
}
else{
$this->$pdo->query("UPDATE `character_cache` SET `name` = '".$charactername."', `characterImage` = '".$characterImage[0]."', `textheadline` = '".$textheadline."', `texttalents` = '".$texttalents."', `textraceclass` = '".$textraceclass."', `level` = '".$level."', `gearscore` = '".$textgearscore."', `expired_at` = '".$expired_at."' WHERE `character_cache`.`name` = '".$charactername."';");
}
return array("characterImage" => $characterImage, "textheadline" => $textheadline, "texttalents" => $texttalents, "textraceclass" => $textraceclass, "level" => $level, "textgearscore" => $textgearscore, "expired_at" => $expired_at);
}
private function CreatePortrait($characterData = array()){
$logo = imagecreatefromjpeg("./characterImages/".$characterData["characterImage"]);
$image = imagecreatetruecolor(84,96);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0 , 0, 0);
$pos_level = 35;
if($level < 10){
$pos_level = 39;
}
imagefill($image, 0, 0, $this->$white);
imagecopymerge($image,imagescale($logo,84),0,0,0,0,84,84,100);
imagefilledellipse($image,43,80,30,30,$this->$black);
imageellipse($image,43,80,28,28,$this->$white);
imagettftext($image,12,0,$pos_level,87,$white,$this->fontBold,$level);
//imageantialias($image,true);
return $image;
}
public function CreateFullImage($charactername){
$characterData = $this->GetData($charactername);
$portrait = $this->CreatePortrait($characterData);
$image = imagecreatetruecolor(600,100);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0 , 0, 0);
imagefill($image, 0, 0, $this->$white);
imagecopymerge($image,$portrait,0,0,0,0,84,84,100);
imagefilledellipse($image,43,80,30,30,$this->$black);
imageellipse($image,43,80,28,28,$this->$white);
//imageantialias($image,true);
imagettftext($image, 18, 0, 90, 20, $this->$black, $this->$fontBold, $textheadline);
imagettftext($image,12,0,100,45,$this->$black, $this->$font, $textraceclass);
imagettftext($image,12,0,100,65,$this->$black, $this->$font,$texttalents);
if($char["level"] == 80){
imagettftext($image,12,0,250,45,$this->$black,$this->$font,"Gearscore: ".$textgearscore);
}
return $image;
}
public function CreateOpenGraphImage($charactername){
return $this->CreatePortrait($this->GetData($charactername));
}
public function ConvertToBase64($image){
ob_start();
imagepng($image);
$image_data = ob_get_contents();
ob_end_clean ();
return "data:image/png;base64,".base64_encode($image_data);
}
}
Zuletzt bearbeitet: