2012-07-16 45 views
0

为什么我的班级不画画? 如果我做它,它运行的唯一的功能,但在课堂上它不工作:(。 我在PHP类是新的(Java类是不是新的对我来说)。为什么不绘制图片? (PHP)

<?php 

class Schild 
{ 

    public function __construct(){ 
     $text = $_GET['text']; 
     $picture = imagecreatefrompng("bild.png"); 
     $pika = imagecreatefromjpeg("pika.jpg"); 
     $pika_size = getimagesize("pika.jpg"); 
    } 

    public function drawPicture() 
    { 
     $im = imagecolorallocate ($picture, 255, 0, 255); 
     imagettftext($picture, 111, 0, 100, 100,$im , "Marmellata(Jam)_demo.ttf", $text); 

     # int ImageCopy (resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h) 
     imagecopy($picture, $pika, 50, 50, 0, 0, $pika_size[0], $pika_size[1]); 

     $zufall = rand(1,99999999); 

     #header("Content-Type: image/jpeg"); 
     imagejpeg($picture); 
     imagedestroy($picture); 

    } 
} 

$schild1 = new Schild(); 
$schild1->drawPicture(); 
?> 
+0

当它是一个类时会发生什么?输出是什么?你尝试过什么? – SomeKittens 2012-07-16 17:40:40

回答

3
<?php 

class Schild 
{ 
    protected $picture; 
    protected $pika; 
    protected $pika_size; 
    protected $text; 

    public function __construct(){ 
     $this->text = $_GET['text']; 
     $this->picture = imagecreatefrompng("bild.png"); 
     $this->pika = imagecreatefromjpeg("pika.jpg"); 
     $this->pika_size = getimagesize("pika.jpg"); 
    } 

    public function drawPicture() 
    { 
     $im = imagecolorallocate ($this->picture, 255, 0, 255); 
     imagettftext($this->picture, 111, 0, 100, 100,$im , "Marmellata(Jam)_demo.ttf", $this->text); 

     # int ImageCopy (resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h) 
     imagecopy($this->picture, $this->pika, 50, 50, 0, 0, $this->pika_size[0], $this->pika_size[1]); 

     $zufall = rand(1,99999999); 

     #header("Content-Type: image/jpeg"); 
     imagejpeg($this->picture); 
     imagedestroy($this->picture); 

    } 
} 

$schild1 = new Schild(); 
$schild1->drawPicture(); 
?> 

的问题是你在__construct中声明变量,但它们是局部变量,一旦__construct()完成执行,它将删除所有局部变量,你必须使用$this关键字将它们声明为CLASS变量,以便它们可以被其他函数访问。

+1

非常感谢它的工作原理:) – Furtano 2012-07-16 17:44:06

+0

盗贼 - 我会在文本中添加一行或两行来说出你实际做了什么以及为什么,所以海报和其他人可以学习而不是复制和粘贴。 – 2012-07-16 17:45:14

+1

@RyanB我在原来的帖子后约10秒添加了一段描述:) – 2012-07-16 17:45:54

相关问题